rqpush

Crates.iorqpush
lib.rsrqpush
version0.4.9
sourcesrc
created_at2019-10-14 06:08:13.538102
updated_at2019-12-02 12:40:07.788729
descriptionA library to assist with pushing notifications to RQueue.
homepagehttps://github.com/jeremyandrews/rqpush
repositoryhttps://github.com/jeremyandrews/rqpush
max_upload_size
id172347
size108,746
Jeremy Andrews (jeremyandrews)

documentation

https://docs.rs/rqpush/

README

RQPush

A library to assist with pushing notifications to RQueue.

RQPush Overview

RQPush is only useful as a library for pushing notifications into RQueue. For this purpose, it provides the following functionality:

  • Builds notifications with support for Handlebar templating
  • Calculates a sha256 hash of each notification, optionally salted with a shared secret
  • (@TODO) Routes notifications to the appropriate queue via SRV records

Notifications Overview

Notifications require the following three fields:

  • app: application name
  • title: the title of the notification, for example used as an email subject
  • short_text: the body of the notification

The following fields can optionally be defined as well:

  • url: ie, the URL of the project generating the notification, or a URL to view more information
  • tagline: a description of the project generating the notification
  • category: allows arbitrary categorization of notifications, primarily used for filtering and routing
  • lang: two letter language code, defaults to "en"
  • short_text_template: allows handlebar variable replacement, for example {{foo}}
  • short_html: html version of short_text
  • short_html_template: allows handlebar variable replacement and wraps in appropriate HTML tags
  • long_text: optional extended version of short_text
  • long_html_template: allows handlebar variable replacement and wraps in appropriate HTML tags
  • values: key-value pairs for handlebars-style templating

Working With Notifications

Notifications are created as follows:

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:

notification.set_title("https://github.com/jeremyandrews/rqpush");

And finally, a notification can be sent as follows:

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.

Netgrasp Example

The following example shows a real-world example, sending a notification with Netgrasp.

use rqpush::Notification;

let mut notification: Notification = Notification::init("Netgrasp", "[netgrasp] new device: {{device}}", "A new device joined your network: {{device}}");
notification.set_category("first_seen_device");

@TODO: Finish:

{
    "app": "Netgrasp",
    "category": "first_seen_device",
    "lang": "en",
    "title": "[netgrasp] new device: iPhone",
    "short_text": "A new device joined your network: iPhone",
    "short_html": "<P>A new device joined your network: <EM>iPhone</EM></P>",
    "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: now

    In 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>",
}
Commit count: 22

cargo fmt