A library that implements a kind of fan-out pattern, sending messages to very different endpoints. Extendable through the implementation of custom Channels.
Project description
A library that implements a kind of fan-out pattern, sending messages to very different endpoints. Extendable through the implementation of custom Channels.
Documentation: http://notifierlib.readthedocs.io/en/latest/
Features
Introduced concepts are:
- Channels
A channel is a communication endpoint capable of sending some type of message exposing a “notify” method.
- Groups
A group is a construct bringing channels together under a common entrypoint showing up as a method call of the main Notifier object.
- Notifier
The main object bringing together channels as broadcast by default and exposing methods to register and unregister channels and add and remove groups.
The payload of the notification methods is by convention a dictionary with at least a “subject” and a “message” key with the appropriate values. It is designed like this so it can be very easy to implement much more complex structures like templates without needed any domain knowledge on all the channels.
Each channel can implement their own template as in instantiation argument in their class and handle the interpolation of variables in the notify method.
An example could be :
from notifierlib.channels import Email
from notifierlib import Notifier, Group
import logging
logging.basicConfig(level=logging.DEBUG)
template='<b>{{subject}}</b> <i>{{message}}</i> <a href="http://google.com">link</a>.'
email=Email('email',
sender='sender@gmail.com',
recipient='recipient@gmail.com',
smtp_address='smtp.domain.com',
username='smtp_username',
password='smtp_password',
tls=True,
ssl=False,
port=587,
template=template,
content='html')
notifier=Notifier()
notifier.register(email)
notifier.broadcast(subject='this is a test of a template', message="""this is a nice and long message""")
The above would render the template with the provided values on the notify method of the email channel before the mail gets sent.
For a more detailed explanation please see the USAGE.rst file.
History
0.0.1 (18-09-2017)
First code creation
1.0.0 (07-07-2021)
Dropped support for python2.7, implemented a pipeline and bumped dependencies.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file notifierlib-1.0.0.tar.gz
.
File metadata
- Download URL: notifierlib-1.0.0.tar.gz
- Upload date:
- Size: 56.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.7.0 requests/2.25.1 setuptools/57.0.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a368141a36738659427444715dcd5c78b7de0db83ab4260434b25227e9cafda |
|
MD5 | 7b957d325fc7e4d35cced7d07b54893b |
|
BLAKE2b-256 | 644ed0cb7a92793acdb8f2be53d4cdddde9a65e6e8ed9e6014bb4eb7129727a0 |
File details
Details for the file notifierlib-1.0.0-py3.7.egg
.
File metadata
- Download URL: notifierlib-1.0.0-py3.7.egg
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.7.0 requests/2.25.1 setuptools/57.0.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 199875d6fe347210f1d0bf86a6028580a4686313476df716b8e60ef837d55227 |
|
MD5 | 1a0a2a3cd331cffff53d109460b3acde |
|
BLAKE2b-256 | fa595d478109622dcc664a2deb7c38208b7ba9f0608ec8a1d472a5f867805320 |