* Make debugSend/debugRecv procs public. Fixes #12189 * Make checkReply proc public. Part of #12189 * Add doc comments for debugSend,debugRecv and checkReply
This commit is contained in:
parent
5571d48c32
commit
6c0c882509
1 changed files with 37 additions and 3 deletions
|
|
@ -65,12 +65,36 @@ type
|
||||||
Smtp* = SmtpBase[Socket]
|
Smtp* = SmtpBase[Socket]
|
||||||
AsyncSmtp* = SmtpBase[AsyncSocket]
|
AsyncSmtp* = SmtpBase[AsyncSocket]
|
||||||
|
|
||||||
proc debugSend(smtp: Smtp | AsyncSmtp, cmd: string) {.multisync.} =
|
proc debugSend*(smtp: Smtp | AsyncSmtp, cmd: string) {.multisync.} =
|
||||||
|
## Sends ``cmd`` on the socket connected to the SMTP server.
|
||||||
|
##
|
||||||
|
## If the ``smtp`` object was created with ``debug`` enabled,
|
||||||
|
## debugSend will invoke ``echo("C:" & cmd)`` before sending.
|
||||||
|
##
|
||||||
|
## This is a lower level proc and not something that you typically
|
||||||
|
## would need to call when using this module. One exception to
|
||||||
|
## this is if you are implementing any
|
||||||
|
## `SMTP extensions<https://en.wikipedia.org/wiki/Extended_SMTP>`_.
|
||||||
|
|
||||||
if smtp.debug:
|
if smtp.debug:
|
||||||
echo("C:" & cmd)
|
echo("C:" & cmd)
|
||||||
await smtp.sock.send(cmd)
|
await smtp.sock.send(cmd)
|
||||||
|
|
||||||
proc debugRecv(smtp: Smtp | AsyncSmtp): Future[TaintedString] {.multisync.} =
|
proc debugRecv*(smtp: Smtp | AsyncSmtp): Future[TaintedString] {.multisync.} =
|
||||||
|
## Receives a line of data from the socket connected to the
|
||||||
|
## SMTP server.
|
||||||
|
##
|
||||||
|
## If the ``smtp`` object was created with ``debug`` enabled,
|
||||||
|
## debugRecv will invoke ``echo("S:" & result.string)`` after
|
||||||
|
## the data is received.
|
||||||
|
##
|
||||||
|
## This is a lower level proc and not something that you typically
|
||||||
|
## would need to call when using this module. One exception to
|
||||||
|
## this is if you are implementing any
|
||||||
|
## `SMTP extensions<https://en.wikipedia.org/wiki/Extended_SMTP>`_.
|
||||||
|
##
|
||||||
|
## See `checkReply(reply)<#checkReply,,string>`_.
|
||||||
|
|
||||||
result = await smtp.sock.recvLine()
|
result = await smtp.sock.recvLine()
|
||||||
if smtp.debug:
|
if smtp.debug:
|
||||||
echo("S:" & result.string)
|
echo("S:" & result.string)
|
||||||
|
|
@ -166,7 +190,17 @@ proc quitExcpt(smtp: AsyncSmtp, msg: string): Future[void] =
|
||||||
retFuture.fail(newException(ReplyError, msg))
|
retFuture.fail(newException(ReplyError, msg))
|
||||||
return retFuture
|
return retFuture
|
||||||
|
|
||||||
proc checkReply(smtp: Smtp | AsyncSmtp, reply: string) {.multisync.} =
|
proc checkReply*(smtp: Smtp | AsyncSmtp, reply: string) {.multisync.} =
|
||||||
|
## Calls `debugRecv<#debugRecv>`_ and checks that the received
|
||||||
|
## data starts with ``reply``. If the received data does not start
|
||||||
|
## with ``reply``, then a ``QUIT`` command will be sent to the SMTP
|
||||||
|
## server and a ``ReplyError`` exception will be raised.
|
||||||
|
##
|
||||||
|
## This is a lower level proc and not something that you typically
|
||||||
|
## would need to call when using this module. One exception to
|
||||||
|
## this is if you are implementing any
|
||||||
|
## `SMTP extensions<https://en.wikipedia.org/wiki/Extended_SMTP>`_.
|
||||||
|
|
||||||
var line = await smtp.debugRecv()
|
var line = await smtp.debugRecv()
|
||||||
if not line.startswith(reply):
|
if not line.startswith(reply):
|
||||||
await quitExcpt(smtp, "Expected " & reply & " reply, got: " & line)
|
await quitExcpt(smtp, "Expected " & reply & " reply, got: " & line)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue