5 个版本
0.2.2 | 2024年7月15日 |
---|---|
0.2.1 | 2024年6月23日 |
0.2.0 | 2024年6月23日 |
0.1.1 | 2024年4月6日 |
0.1.0 | 2024年4月6日 |
1179 在 网页开发 中排名
每月下载 136 次
75KB
1.5K SLoC
apb
实现 ActivityPub 的特性和类型
apb
实现了所有 ActivityStreams 类型作为特性和,这样实现的结构体不需要持有所有可能的字段,而只需实现相关字段的获取器
apb
还提供了一个 Node<T>
枚举,它可以表示 ActivityPub 节点(空、链接、对象、数组)
在 crate 的文档中了解更多
原因
upub 使用这些类型来实现其联盟,但我希望模块化 apb 类型
状态
这个 crate 仍在开发中,优先考虑 upub 的需求,如果您想帮忙或调整 apb 以适应您的项目,请与我联系!
lib.rs
:
apb
实现 ActivityPub 的特性和类型
此 crate 暴露的主要类型是 [Node],可以是
- Node::Empty:对象中不存在
- Node::Link:仅包含对象的链接
- Node::Object:包含嵌入的对象
- Node::Array:包含嵌入对象的数组
节点包含 AP 对象,这些对象实现了一个或多个特性(如 [Object] 或 [Actor])
功能
unstructured
:所有特性都实现了对 serde_json::Value 的支持,因此可以操纵自由形式的 json 地图作为有效的 AP 对象orm
:枚举类型也与 sea-orm 数据库兼容fetch
:[Node] 暴露了 Node::fetch 以取消引用远程节点
结构
- [Base] | [BaseMut] | [BaseType]
- BaseType::Link | [Link] | [LinkMut] | [LinkType]
- BaseType::Object | [Object] | [ObjectMut] | [ObjectType]
- ObjectType::Activity | [Activity] | [ActivityMut] | [ActivityType]
- ActivityType::Accept | [Accept] | [AcceptMut] | [AcceptType]
- ActivityType::Add
- ActivityType::Announce
- ActivityType::Create
- ActivityType::Delete
- ActivityType::Dislike
- ActivityType::Flag
- ActivityType::Follow
- ActivityType::IntransitiveActivity | [IntransitiveActivity] | [IntransitiveActivityMut] | [IntransitiveActivityType]
- ActivityType::Ignore | [Ignore] | [IgnoreMut] | [IgnoreType]
- ActivityType::Join
- ActivityType::Leave
- ActivityType::Like
- ActivityType::Listen
- ActivityType::Move
- ActivityType::Offer | [Offer] | [OfferMut] | [OfferType]
- ActivityType::Read
- ActivityType::Reject | [Reject] | [RejectMut] | [RejectType]
- ActivityType::Remove
- ActivityType::Undo
- ActivityType::Update
- ActivityType::View
- ObjectType::Actor | [Actor] | [ActorMut] | [ActorType] *
- ObjectType::Article
- ObjectType::Collection | [Collection] | [CollectionMut] | [CollectionType]
- ObjectType::Document | [Document] | [DocumentMut] | [DocumentType]
- ObjectType::Event
- ObjectType::Note
- ObjectType::Object
- ObjectType::Place
- ObjectType::Profile
- ObjectType::Relationship
- ObjectType::Tombstone
- ObjectType::Activity | [Activity] | [ActivityMut] | [ActivityType]
- [PublicKey] | [PublicKeyMut] **
*: Actor
在技术上只是一个对象,并不是真正的“子类型”
**: PublicKey
在 ActivityPub 中引入,不是 ActivityStream 的一部分
依赖关系
~2–17MB
~159K SLoC