A library to assist with pushing notifications to RQueue.
RQPush is only useful as a library for pushing notifications into RQueue. For this purpose, it provides the following functionality:
Notifications require the following three fields:
app
: application nametitle
: the title of the notification, for example used as an email subjectshort_text
: the body of the notificationThe following fields can optionally be defined as well:
url
: ie, the URL of the project generating the notification, or a URL to view more informationtagline
: a description of the project generating the notificationcategory
: allows arbitrary categorization of notifications, primarily used for filtering and routinglang
: two letter language code, defaults to "en"short_text_template
: allows handlebar variable replacement, for example {{foo}}
short_html
: html version of shorttext_short_html_template
: allows handlebar variable replacement and wraps in appropriate HTML tagslong_text
: optional extended version of short_text
long_html_template
: allows handlebar variable replacement and wraps in appropriate HTML tagsvalues
: key-value pairs for handlebars-style templatingNotifications are created as follows:
```Rust use rqpush::Notification;
let mut notification: Notification = Notification::init("app name", "title", "short text"); ```
This is enough to generate a basic notification, however additional customization is possible. For example, to set a project URL on a notification that was created per the earlier example:
Rust
notification.set_title("https://github.com/jeremyandrews/rqpush");
And finally, a notification can be sent as follows:
Rust
notification.send("127.0.0.1:8000", 42, 0, None);
In this example, we send the notification to port 8000 on localhost, with a priority of 42. We don't set a TTL so the notification or a shared secret.
The following example shows a real-world example, sending a notification with Netgrasp.
```Rust use rqpush::Notification;
let mut notification: Notification = Notification::init("Netgrasp", "[netgrasp] new device: {{device}}", "A new device joined your network: {{device}}"); notification.setcategory("firstseen_device"); ```
@TODO: Finish:
```json { "app": "Netgrasp", "category": "firstseendevice", "lang": "en", "title": "[netgrasp] new device: iPhone", "shorttext": "A new device joined your network: iPhone", "shorthtml": "
A new device joined your network: iPhone
", "long_text": "A new device joined your network: * iPhone * ip: 10.202.14.37 [ff:ff:ff:ff:ff:ff] * previously seen: never * first seen: nowIn the past 24 hours this device talked to 1 device:
* Gateway: 10.202.14.1
Email generated by Netgrasp passive network observation tool.",
"long_html": "<P><UL>
<LI>iPhone</LI>
<LI>ip: 10.202.14.37 [ff:ff:ff:ff:ff:ff]</LI>
<LI>previously seen: never</LI>
<LI>first seen: now</LI>
</UL>
In the past 24 hours this device talked to 1 device:
<UL>
<LI>Gateway: 10.202.14.1</LI>
</UL></P>
<DIV ID="footer">
<P><SMALL><EM>Email generated by Netgrasp passive network observation tool.</EM></SMALL></P>
</DIV>",
} ```