aiospamc package¶
Submodules¶
aiospamc.connections module¶
ConnectionManager classes for TCP and Unix sockets.
- class aiospamc.connections.Timeout(total: float = 600, connection: Optional[float] = None, response: Optional[float] = None)[source]¶
Bases:
object
Container object for defining timeouts.
- __init__(total: float = 600, connection: Optional[float] = None, response: Optional[float] = None) None [source]¶
Timeout constructor.
- Parameters
total – The total length of time in seconds to set the timeout.
connection – The length of time in seconds to allow for a connection to live before timing out.
response – The length of time in seconds to allow for a response from the server before timing out.
- class aiospamc.connections.ConnectionManager(connection_string: str, timeout: Optional[aiospamc.connections.Timeout] = None)[source]¶
Bases:
object
Stores connection parameters and creates connections.
- __init__(connection_string: str, timeout: Optional[aiospamc.connections.Timeout] = None) None [source]¶
ConnectionManager constructor.
- Parameters
timeout – Timeout configuration
- property logger: loguru.Logger¶
Return the logger object.
- async request(data: bytes) bytes [source]¶
Send bytes data and receive a response.
- Raises
AIOSpamcConnectionFailed
- Raises
ClientTimeoutException
- Parameters
data – Data to send.
- class aiospamc.connections.TcpConnectionManager(host: str, port: int, ssl_context: Optional[ssl.SSLContext] = None, timeout: Optional[aiospamc.connections.Timeout] = None)[source]¶
Bases:
aiospamc.connections.ConnectionManager
Connection manager for TCP connections.
- __init__(host: str, port: int, ssl_context: Optional[ssl.SSLContext] = None, timeout: Optional[aiospamc.connections.Timeout] = None) None [source]¶
TcpConnectionManager constructor.
- Parameters
host – Hostname or IP address.
port – TCP port.
ssl_context – SSL context.
timeout – Timeout configuration.
- class aiospamc.connections.UnixConnectionManager(path: str, timeout: Optional[aiospamc.connections.Timeout] = None)[source]¶
Bases:
aiospamc.connections.ConnectionManager
Connection manager for Unix pipes.
- __init__(path: str, timeout: Optional[aiospamc.connections.Timeout] = None)[source]¶
UnixConnectionManager constructor.
- Parameters
path – Unix socket path.
timeout – Timeout configuration
- aiospamc.connections.new_ssl_context(verify: Optional[Any]) Optional[ssl.SSLContext] [source]¶
Creates an SSL context based on the supplied parameter.
- Parameters
verify – Use SSL for the connection. If True, will use root certificates. If False, will not verify the certificate. If a string to a path or a Path object, the connection will use the certificates found there.
- aiospamc.connections.new_connection_manager(host: Optional[str] = None, port: Optional[int] = None, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, context: Optional[ssl.SSLContext] = None) aiospamc.connections.ConnectionManager [source]¶
Create a new connection manager.
- Parameters
host – TCP hostname.
port – TCP port number.
socket_path – Unix socket path.
timeout – Timeout configuration.
context – SSL context configuration.
aiospamc.exceptions module¶
Collection of exceptions.
- exception aiospamc.exceptions.ClientException[source]¶
Bases:
Exception
Base class for exceptions raised from the client.
- exception aiospamc.exceptions.BadRequest[source]¶
Bases:
aiospamc.exceptions.ClientException
Request is not in the expected format.
- exception aiospamc.exceptions.BadResponse[source]¶
Bases:
aiospamc.exceptions.ClientException
Response is not in the expected format.
- exception aiospamc.exceptions.AIOSpamcConnectionFailed[source]¶
Bases:
aiospamc.exceptions.ClientException
Connection failed.
- exception aiospamc.exceptions.ResponseException(code: int, message: str)[source]¶
Bases:
Exception
Base class for exceptions raised from a response.
- exception aiospamc.exceptions.UsageException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Command line usage error.
- exception aiospamc.exceptions.DataErrorException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Data format error.
- exception aiospamc.exceptions.NoInputException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Cannot open input.
- exception aiospamc.exceptions.NoUserException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Addressee unknown.
- exception aiospamc.exceptions.NoHostException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Hostname unknown.
Bases:
aiospamc.exceptions.ResponseException
Service unavailable.
UnavailableException constructor.
- Parameters
message – Message response.
- exception aiospamc.exceptions.InternalSoftwareException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Internal software error.
- exception aiospamc.exceptions.OSErrorException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
System error (e.g. can’t fork the process).
- exception aiospamc.exceptions.OSFileException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Critical operating system file missing.
- exception aiospamc.exceptions.CantCreateException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Can’t create (user) output file.
- exception aiospamc.exceptions.IOErrorException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Input/output error.
- exception aiospamc.exceptions.TemporaryFailureException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Temporary failure, user is invited to try again.
- exception aiospamc.exceptions.ProtocolException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Remote error in protocol.
- exception aiospamc.exceptions.NoPermissionException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Permission denied.
- exception aiospamc.exceptions.ConfigException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
Configuration error.
- exception aiospamc.exceptions.ServerTimeoutException(message: str)[source]¶
Bases:
aiospamc.exceptions.ResponseException
,aiospamc.exceptions.TimeoutException
Timeout exception from the server.
- exception aiospamc.exceptions.ClientTimeoutException[source]¶
Bases:
aiospamc.exceptions.ClientException
,aiospamc.exceptions.TimeoutException
Timeout exception from the client.
- exception aiospamc.exceptions.ParseError(message=None)[source]¶
Bases:
Exception
Error occurred while parsing.
- exception aiospamc.exceptions.NotEnoughDataError(message=None)[source]¶
Bases:
aiospamc.exceptions.ParseError
Expected more data than what the protocol content specified.
- exception aiospamc.exceptions.TooMuchDataError(message=None)[source]¶
Bases:
aiospamc.exceptions.ParseError
Too much data was received than what the protocol content specified.
aiospamc.frontend module¶
Frontend functions for the package.
- async aiospamc.frontend.check(message: Union[bytes, SupportsBytes], *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return a response with a score header.
- Parameters
message – Copy of the message.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with a “Spam” header showing if the message is considered spam as well as the score.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.headers(message: Union[bytes, SupportsBytes], *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return the modified message headers.
- Parameters
message – Copy of the message.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with a “Spam” header showing if the message is considered spam as well as the score. The body contains the modified message headers, but not the content of the message.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.ping(*, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, **kwargs) aiospamc.responses.Response [source]¶
Sends a ping to the SPAMD service.
- Parameters
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.
- Returns
A response with “PONG”.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.process(message: Union[bytes, SupportsBytes], *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return a response with a score header.
- Parameters
message – Copy of the message.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with a “Spam” header showing if the message is considered spam as well as the score. The body contains a modified copy of the message.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.report(message: Union[bytes, SupportsBytes], *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return a response with a score header.
- Parameters
message – Copy of the message.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with a “Spam” header showing if the message is considered spam as well as the score. The body contains a report.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.report_if_spam(message: Union[bytes, SupportsBytes], *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return a response with a score header.
- Parameters
message – Copy of the message.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with a “Spam” header showing if the message is considered spam as well as the score. The body contains a report if the message is considered spam.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.symbols(message: Union[bytes, SupportsBytes], *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return a response with rules that matched.
- Parameters
message – Copy of the message.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with a “Spam” header showing if the message is considered spam as well as the score. The body contains a comma-separated list of the symbols that were hit.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
- async aiospamc.frontend.tell(message: Union[bytes, SupportsBytes], message_class: Union[str, aiospamc.options.MessageClassOption], remove_action: Optional[Union[str, aiospamc.options.ActionOption]] = None, set_action: Optional[Union[str, aiospamc.options.ActionOption]] = None, *, host: str = 'localhost', port: int = 783, socket_path: Optional[str] = None, timeout: Optional[aiospamc.connections.Timeout] = None, verify: Optional[Any] = None, user: Optional[str] = None, compress: bool = False, **kwargs) aiospamc.responses.Response [source]¶
Checks a message if it’s spam and return a response with a score header.
- Parameters
message – Copy of the message.
message_class – Classify the message as ‘spam’ or ‘ham’.
remove_action – Remove message class for message in database.
set_action – Set message class for message in database.
host – Hostname or IP address of the SPAMD service, defaults to localhost.
port – Port number for the SPAMD service, defaults to 783.
socket_path – Path to Unix socket.
timeout – Timeout settings.
verify – Enable SSL. True will use the root certificates from the
certifi
package. False will use SSL, but not verify the root certificates. Passing a string to a filename will use the path to verify the root certificates.user – Username to pass to the SPAMD service.
compress – Enable compress of the request body.
- Returns
A successful response with “DidSet” and/or “DidRemove” headers along with the actions that were taken.
- Raises
BadResponse – If the response from SPAMD is ill-formed this exception will be raised.
AIOSpamcConnectionFailed – Raised if an error occurred when trying to connect.
UsageException – Error in command line usage.
DataErrorException – Error with data format.
NoInputException – Cannot open input.
NoUserException – Addressee unknown.
NoHostException – Hostname unknown.
UnavailableException – Service unavailable.
InternalSoftwareException – Internal software error.
OSErrorException – System error.
OSFileException – Operating system file missing.
CantCreateException – Cannot create output file.
IOErrorException – Input/output error.
TemporaryFailureException – Temporary failure, may reattempt.
ProtocolException – Error in the protocol.
NoPermissionException – Permission denied.
ConfigException – Error in configuration.
ServerTimeoutException – Server returned a response that it timed out.
ClientTimeoutException – Client timed out during connection.
aiospamc.header_values module¶
Collection of request and response header value objects.
- class aiospamc.header_values.BytesHeaderValue(value: bytes)[source]¶
Bases:
aiospamc.header_values.HeaderValue
Header with bytes value.
- Parameters
value – Value of the header.
- class aiospamc.header_values.GenericHeaderValue(value: str, encoding: str = 'utf8')[source]¶
Bases:
aiospamc.header_values.HeaderValue
Generic header value.
- class aiospamc.header_values.CompressValue(algorithm: str = 'zlib')[source]¶
Bases:
aiospamc.header_values.HeaderValue
Compress header. Specifies what encryption scheme to use. So far only ‘zlib’ is supported.
- class aiospamc.header_values.ContentLengthValue(length: int = 0)[source]¶
Bases:
aiospamc.header_values.HeaderValue
ContentLength header. Indicates the length of the body in bytes.
- class aiospamc.header_values.MessageClassValue(value: aiospamc.options.MessageClassOption = MessageClassOption.ham)[source]¶
Bases:
aiospamc.header_values.HeaderValue
MessageClass header. Used to specify whether a message is ‘spam’ or ‘ham.’
- value: aiospamc.options.MessageClassOption = 'ham'¶
- __init__(value: aiospamc.options.MessageClassOption = MessageClassOption.ham) None ¶
- class aiospamc.header_values.SetOrRemoveValue(action: aiospamc.options.ActionOption = ActionOption(local=False, remote=False))[source]¶
Bases:
aiospamc.header_values.HeaderValue
Base class for headers that implement “local” and “remote” rules.
- action: aiospamc.options.ActionOption = ActionOption(local=False, remote=False)¶
- __init__(action: aiospamc.options.ActionOption = ActionOption(local=False, remote=False)) None ¶
aiospamc.incremental_parser module¶
Module for the parsing functions and objects.
- class aiospamc.incremental_parser.States(value)[source]¶
Bases:
enum.Enum
States for the parser state machine.
- Status = 1¶
- Header = 2¶
- Body = 3¶
- Done = 4¶
- class aiospamc.incremental_parser.Parser(delimiter: bytes, status_parser: Callable[[bytes], Mapping[str, str]], header_parser: Callable[[bytes], Tuple[str, Any]], body_parser: Callable[[bytes, int], bytes], start: aiospamc.incremental_parser.States = States.Status)[source]¶
Bases:
object
The parser state machine.
- Variables
result – Storage location for parsing results.
- __init__(delimiter: bytes, status_parser: Callable[[bytes], Mapping[str, str]], header_parser: Callable[[bytes], Tuple[str, Any]], body_parser: Callable[[bytes, int], bytes], start: aiospamc.incremental_parser.States = States.Status) None [source]¶
Parser constructor.
- Parameters
delimiter – Byte string to split the different sections of the message.
status_parser – Callable to parse the status line of the message.
header_parser – Callable to parse each header line of the message.
body_parser – Callable to parse the body of the message.
start – The state to start the parser on. Allowed for easier testing.
- property state: aiospamc.incremental_parser.States¶
The current state of the parser.
- Returns
The
States
instance.
- parse(stream: bytes) Mapping[str, Any] [source]¶
Entry method to parse a message.
- Parameters
stream – Byte string to parse.
- Returns
Returns the parser results dictionary stored in the class attribute
result
.- Raises
NotEnoughDataError – Raised when not enough data is sent to be parsed.
TooMuchDataError – Raised when too much data is sent to be parsed.
ParseError – Raised when a general parse error is found.
- status() None [source]¶
Splits the message at the delimiter and sends the first part of the message to the status_line callable to be parsed. If successful then the results are stored in the
result
class attribute and the state transitions toStates.Header
.- Raises
NotEnoughDataError – When there is no delimiter the message is incomplete.
ParseError – When the status_line callable experiences an error.
- header() None [source]¶
Splits the message at the delimiter and sends the line to the header_parser.
When splitting the action will be determined depending what is matched:
Header line
Delimiter
Leftover
Action
No
Yes
Delimiter
Headers done, empty body. Clear buffer and transition to
States.Body
.No
Yes
N/A
Headers done. Transition to
States.Body
.Yes
Yes
N/A
Parse header. Record in
result
class attribute.No
No
No
Message was a status line only. Transition to
States.Body
.- Raises
ParseError – None of the previous conditions are matched.
- body() None [source]¶
Uses the length defined in the Content-length header (defaulted to 0) to determine how many bytes the body contains.
- Raises
TooMuchDataError – When there are too many bytes in the buffer compared to the Content-length header value. Transitions the state to
States.Done
.
- aiospamc.incremental_parser.parse_request_status(stream: bytes) Dict[str, str] [source]¶
Parses the status line from a request.
- Parameters
stream – The byte stream to parse.
- Returns
A dictionary with the keys verb, protocol and version.
- Raises
ParseError – When the status line is in an invalid format, not a valid verb, or doesn’t have the correct protocol.
- aiospamc.incremental_parser.parse_response_status(stream: bytes) Dict[str, Union[str, int]] [source]¶
Parse the status line for a response.
- Parameters
stream – The byte stream to parse.
- Returns
A dictionary with the keys protocol, version, status_code, and message.
- Raises
ParseError – When the status line is in an invalid format, status code is not an integer, or doesn’t have the correct protocol.
- aiospamc.incremental_parser.parse_message_class_value(stream: Union[str, aiospamc.options.MessageClassOption]) aiospamc.header_values.MessageClassValue [source]¶
Parses the Message-class header value.
- Parameters
stream – String or MessageClassOption instance.
- Returns
A MessageClassValue instance representing the value.
- Raises
ParseError – When the value doesn’t match either ham or spam.
- aiospamc.incremental_parser.parse_content_length_value(stream: Union[str, int]) aiospamc.header_values.ContentLengthValue [source]¶
Parses the Content-length header value.
- Parameters
stream – String or integer value of the header.
- Returns
A ContentLengthValue instance.
- Raises
ParseError – When the value cannot be cast to an integer.
- aiospamc.incremental_parser.parse_compress_value(stream: str) aiospamc.header_values.CompressValue [source]¶
Parses a value for the Compress header.
- Parameters
stream – String to parse.
- Returns
A CompressValue instance.
- aiospamc.incremental_parser.parse_set_remove_value(stream: Union[aiospamc.options.ActionOption, str]) aiospamc.header_values.SetOrRemoveValue [source]¶
Parse a value for the DidRemove, DidSet, Remove, and Set headers.
- Parameters
stream – String to parse or an instance of ActionOption.
- Returns
A SetOrRemoveValue instance.
- aiospamc.incremental_parser.parse_spam_value(stream: str) aiospamc.header_values.SpamValue [source]¶
Parses the values for the Spam header.
- Parameters
stream – String to parse.
- Returns
An SpamValue instance.
- Raises
ParseError – Raised if there is no true/false value, or valid numbers for the score or threshold.
- aiospamc.incremental_parser.parse_user_value(stream: str) aiospamc.header_values.UserValue [source]¶
Parse the username.
- Parameters
stream – String of username to parse. Whitespace is trimmed.
- Returns
The UserValue instance.
- aiospamc.incremental_parser.parse_header_value(header: str, value: Union[str, bytes]) aiospamc.header_values.HeaderValue [source]¶
Sends the header value stream to the header value parsing function.
- Parameters
header – Name of the header.
value – String or byte stream of the header value.
- Returns
The HeaderValue instance from the parsing function.
- aiospamc.incremental_parser.parse_header(stream: bytes) Tuple[str, aiospamc.header_values.HeaderValue] [source]¶
Splits the header line and sends to the header parsing function.
- Parameters
stream – Byte stream of the header line.
- Returns
A tuple of the header name and value.
- aiospamc.incremental_parser.parse_body(stream: bytes, content_length: int) bytes [source]¶
Parses the body of a message.
- Parameters
stream – Byte stream for the body.
content_length – Expected length of the body in bytes.
- Returns
Byte stream of the body.
- Raises
NotEnoughDataError – If the length is less than the stream.
TooMuchDataError – If the length is more than the stream.
- aiospamc.incremental_parser.header_value_parsers = {'Compress': <function parse_compress_value>, 'Content-length': <function parse_content_length_value>, 'DidRemove': <function parse_set_remove_value>, 'DidSet': <function parse_set_remove_value>, 'Message-class': <function parse_message_class_value>, 'Remove': <function parse_set_remove_value>, 'Set': <function parse_set_remove_value>, 'Spam': <function parse_spam_value>, 'User': <function parse_user_value>}¶
Mapping for header names to their parsing functions.
- class aiospamc.incremental_parser.RequestParser[source]¶
Bases:
aiospamc.incremental_parser.Parser
Sub-class of the parser for requests.
- class aiospamc.incremental_parser.ResponseParser[source]¶
Bases:
aiospamc.incremental_parser.Parser
Sub-class of the parser for responses.
aiospamc.options module¶
Data structures used for function parameters.
- class aiospamc.options.MessageClassOption(value)[source]¶
Bases:
enum.Enum
Option to be used for the MessageClass header.
- spam = 'spam'¶
- ham = 'ham'¶
- class aiospamc.options.ActionOption(local: bool, remote: bool)[source]¶
Bases:
object
Option to be used in the DidRemove, DidSet, Set, and Remove headers.
- Parameters
local – An action will be performed on the SPAMD service’s local database.
remote – An action will be performed on the SPAMD service’s remote database.
aiospamc.requests module¶
Contains all requests that can be made to the SPAMD service.
- class aiospamc.requests.Request(verb: str, version: str = '1.5', headers: Optional[Dict[str, aiospamc.header_values.HeaderValue]] = None, body: Union[bytes, SupportsBytes] = b'', **_)[source]¶
Bases:
object
SPAMC request object.
- __init__(verb: str, version: str = '1.5', headers: Optional[Dict[str, aiospamc.header_values.HeaderValue]] = None, body: Union[bytes, SupportsBytes] = b'', **_) None [source]¶
Request constructor.
- Parameters
verb – Method name of the request.
version – Version of the protocol.
headers – Collection of headers to be added.
body – Byte string representation of the body.
aiospamc.responses module¶
Contains classes used for responses.
- class aiospamc.responses.Status(value)[source]¶
Bases:
enum.IntEnum
Enumeration for the status values defined by SPAMD.
- EX_OK = 0¶
- EX_USAGE = 64¶
- EX_DATAERR = 65¶
- EX_NOINPUT = 66¶
- EX_NOUSER = 67¶
- EX_NOHOST = 68¶
- EX_UNAVAILABLE = 69¶
- EX_SOFTWARE = 70¶
- EX_OSERR = 71¶
- EX_OSFILE = 72¶
- EX_CANTCREAT = 73¶
- EX_IOERR = 74¶
- EX_TEMPFAIL = 75¶
- EX_PROTOCOL = 76¶
- EX_NOPERM = 77¶
- EX_CONFIG = 78¶
- EX_TIMEOUT = 79¶
- class aiospamc.responses.Response(version: str = '1.5', status_code: Union[aiospamc.responses.Status, int] = 0, message: str = '', headers: Optional[Dict[str, aiospamc.header_values.HeaderValue]] = None, body: bytes = b'', **_)[source]¶
Bases:
object
Class to encapsulate response.
- __init__(version: str = '1.5', status_code: Union[aiospamc.responses.Status, int] = 0, message: str = '', headers: Optional[Dict[str, aiospamc.header_values.HeaderValue]] = None, body: bytes = b'', **_)[source]¶
Response constructor.
- Parameters
version – Version reported by the SPAMD service response.
status_code – Success or error code.
message – Message associated with status code.
body – Byte string representation of the body.
headers – Collection of headers to be added.
- property status_code: Union[aiospamc.responses.Status, int]¶
Status code property getter.
- Returns
Value of status code.
Module contents¶
aiospamc package.
An asyncio-based library to communicate with SpamAssassin’s SPAMD service.