2个不稳定版本
0.2.0 | 2020年10月1日 |
---|---|
0.1.0 | 2020年7月3日 |
#743 in HTTP服务器
20KB
378 行
ical-filter
一个HTTP守护进程,可以解析任何ical源并以其规范形式表示。允许根据iCalendar事件摘要进行过滤。如果您有一个希望定制以包含到您最喜欢的日历应用程序中的iCalendar源,那么它将非常理想。我使用它来创建一个个性化的值班表,因为我无法访问提供原始源的服务软件。
注意:目前不会传播任何其他警报、待办事项、日志和空闲时间。如果需要此功能,请提交问题。
注意:所有日期时间都规范化为UTC。
配置
构建二进制文件,并使用以下可选ENV变量运行
RUST_LOG=info \
ICAL_FILTER_SOCKETADDR=127.0.0.1:8080 \
cargo run
端点
所有端点都接受以下查询参数
url
:ical源的源URL。filter[]
(可选):要应用于摘要(标题)字段的格式为[!]condition:pattern
的过滤器。在过滤器的开头包含一个!
将反转它。所有过滤器都必须匹配才能包含事件。
支持的条件
equals
-- 摘要等于pattern
(先前版本的行为)startsWith
-- 摘要以pattern
开头endsWith
-- 摘要以pattern
结尾contains
-- 摘要包含pattern
regex
-- 摘要匹配给定的正则表达式
示例过滤器
true:
-- 匹配所有内容。相当于不包含过滤器!regex:this:can:have:colons.*
-- 拒绝以this:can:have:colons
开头的事件contains:aaa~!true:
-- 由于反转的true
条件,拒绝所有事件
JSON
使用 Content-Type: application/json
获取 url
并将其作为JSON渲染。
https://127.0.0.1:8080/v1/json
将检索类似
[
{
"uid": "TU586226199",
"summary": "Duty call",
"stamp": "2020-07-03T08:55:14Z",
"created": "2020-01-20T16:17:34Z",
"start": "2020-01-25T08:00:00Z",
"end": "2020-01-26T08:00:00Z"
},
{
"uid": "TU597147530",
"summary": "Duty call",
"stamp": "2020-07-03T08:55:14Z",
"created": "2020-01-28T07:45:28Z",
"start": "2020-02-02T08:00:00Z",
"end": "2020-02-03T08:00:00Z"
}
]
ical
检索 url
并将其渲染为 iCalendar v2.0 文件,格式为 Content-Type: text/calendar
。
https://127.0.0.1:8080/v1/ical
将检索类似
BEGIN:VCALENDAR
VERSION:2.0
PRODID:ical-filter
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:UTC
BEGIN:STANDARD
DTSTART:19700329T020000
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:TU586226199
DTSTAMP:20200703T085514Z
SUMMARY:Duty call
DTSTART:20200125T080000Z
DTEND:20200125T080000Z
CREATED:20200120T161734Z
END:VEVENT
BEGIN:VEVENT
UID:TU597147530
DTSTAMP:20200703T085514Z
SUMMARY:Duty call
DTSTART:20200202T080000Z
DTEND:20200202T080000Z
CREATED:20200128T074528Z
END:VEVENT
END:VCALENDAR
依赖项
~31–44MB
~869K SLoC