#ical #ics #web

app ical-filter

HTTP守护进程,用于规范化和过滤iCalendar文件

2个不稳定版本

0.2.0 2020年10月1日
0.1.0 2020年7月3日

#743 in HTTP服务器

MIT许可证

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