10 个版本

0.4.9 2019 年 12 月 2 日
0.4.8 2019 年 12 月 1 日
0.4.6 2019 年 11 月 8 日
0.4.5 2019 年 10 月 17 日

#1 in #推送

每月 28 次下载

BSD-2-Clause

27KB
380

RQPush

辅助将通知推送到 RQueue 的库。

RQPush 概述

RQPush 仅作为一个将通知推送到 RQueue 的库有用。为此,它提供了以下功能

  • 支持 Handlebar 模板的通知构建
  • 计算每个通知的 sha256 哈希值,可选地与共享密钥混合
  • (@TODO) 通过 SRV 记录将通知路由到适当的队列

通知概述

通知需要以下三个字段

  • app: 应用程序名称
  • title: 通知的标题,例如用作电子邮件主题
  • short_text: 通知正文

以下字段也可以定义

  • url: 即,生成通知的项目 URL 或查看更多信息的相关 URL
  • tagline: 生成通知的项目的描述
  • category: 允许对通知进行任意分类,主要用于过滤和路由
  • lang: 两位字母的语言代码,默认为 "en"
  • short_text_template: 允许 Handlebar 变量替换,例如 {{foo}}
  • short_html: short_text 的 HTML 版本
  • short_html_template: 允许 Handlebar 变量替换并将内容包裹在适当的 HTML 标签中
  • long_text: short_text 的可选扩展版本
  • long_html_template: 允许 Handlebar 变量替换并将内容包裹在适当的 HTML 标签中
  • values: 用于 Handlebars 风格模板化的键值对

与通知一起工作

创建通知的方式如下

use rqpush::Notification;

let mut notification: Notification = Notification::init("app name", "title", "short text");

这足以生成一个基本的通知,但是还可以进行额外的定制。例如,为了在前面示例中创建的通知上设置项目 URL

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

最后,可以通过以下方式发送通知

notification.send("127.0.0.1:8000", 42, 0, None);

在这个例子中,我们将通知发送到本地主机的8000端口,优先级为42。我们没有设置TTL,因此通知或共享密钥没有限制。

Netgrasp 示例

以下示例展示了使用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");

@待完成:完成

{
    "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>",
}

依赖项

~22MB
~481K SLoC