Usage
For the first step you have to initialize the client with a proper API token. Postmarker provides a single PostmarkClient class for Server and Account APIs.
>>> from postmarker.core import PostmarkClient
>>> postmark = PostmarkClient(
server_token='SERVER_TOKEN', account_token='ACCOUNT_TOKEN'
)
The variable postmark from the example above will be used in the next examples. By default, logging is configured to be silent. To enable it, pass verbosity to client instantiation:
>>> postmark = PostmarkClient(
server_token='SERVER_TOKEN', account_token='ACCOUNT_TOKEN', verbosity=3
)
With verbosity=3 every request and response will be logged to the console.
By default logs are streamed to sys.stdout to be in line with the Twelve-Factor App. To change it you could use logs_stream parameter in PostmarkClient.
For timeouts and max_retries handling there are two parameters - max_retries and timeout. The timeout value is passed to requests.Session.request. max_retries is passed to requests.adapters.HTTPAdapter.
Alternatively you could use PostmarkClient.from_config method, which is helpful to instantiate PostmarkClient from dict-like object, like Tornado or Flask configurations.
>>> config = {'POSTMARK_SERVER_TOKEN': 'foo', 'POSTMARK_TIMEOUT': 1}
>>> postmark = PostmarkClient.from_config(config, is_uppercase=True)
With is_uppercase set to True keys will be converted to upper case before lookup in the config object. The default value for is_uppercase is False. All arguments names from PostmarkClient.__init__ will be looked up in the config object with default prefix postmark_. To use different prefix, just pass prefix='my_prefix_' to PostmarkClient.from_config method.
>>> config = {'my_prefix_server_token': 'foo', 'my_prefix_timeout': 1}
>>> postmark = PostmarkClient.from_config(config, prefix='my_prefix_')
If you want postmarker to send requests to a non-standard API url, use the root_api_url keyword argument to PostmarkClient.
PostmarkClient(
server_token="SERVER_TOKEN",
account_token="ACCOUNT_TOKEN",
root_api_url="https://api-ssl-temp.postmarkapp.com/",
)
For account APIs only, like domains, sender signatures and servers, the account token alone is enough:
>>> postmark = PostmarkClient(account_token='ACCOUNT_TOKEN')