问题标签 [activitypub]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compatibility - OStatus、pump.io 和 ActivityPub 是什么关系?
我的理解是:
- OStatus是一个分散的社交网络协议,由其他几个协议(Atom feed、Activity Streams、PubSubHubbub、Salmon 和 WebFinger)组成
- GNU Social和Mastodon是两个实现 OStatus 的服务器软件应用程序
- pump.io API是 pump.io 服务器软件(活动流、OAuth、Web 主机元数据)的接口
- identi.ca是一个 pump.io 实例(目前无法访问),GNU MediaGoblin是一个服务器应用程序,目前使用类似于 pump 的 API
- ActivityPub是一个提议的去中心化社交网络协议
- GNU MediaGoblin是一个可能会实现 ActivityPub 的服务器应用程序
这些协议如何互操作?ActivityPub 是完全取代 OStatus,还是仅取代 Activity Streams 组件?
json-ld - ActivityStreams 在活动上的“to”字段与“audience”字段有何不同?
ActivityStreams 规范在5.1 节to
中解释了、cc
、bto
和之间的区别。但是还有一个属性,定义为:bcc
audience
一个或多个实体,它们代表可以认为对象相关的实体的总人口。
这与“to”和“cc”有什么不同?特别是,对ActivityPub 交付有什么不同的影响?
activitypub - 在 ActivityPub 中,如何获取收件箱 URL?
我知道服务器通过 POST 到收件箱和发件箱进行通信。但是收件箱和发件箱的 URL 是什么?
rest - 如何在我的流星应用程序的两个不同包中拥有具有相同 URL 的两条不同路由?
我正在尝试编写一个使用 ActivityPub 标准的应用程序。具体来说,现在,我正在尝试实现“检索对象”部分,其中对具有内容标头的对象 id 的 GET 请求包括application/ld+json; profile="https://www.w3.org/ns/activitystreams"
或application/activity+json
将获取该对象的 activitypub 表示。然而,正如它在文章中所建议的那样,以及许多其他 activitypub 实现所做的那样,我还想在内容标题要求 HTML 时在该 URL 处显示一个 HTML 页面。
此外,我想在单独的包中指定这些路由——一个在后端,一个在前端,以便为同一个后端编写不同的前端。这可能吗?我目前的调查表明它不是,但我还不确定。也许我需要在后端定义路由,并让它检查内容标题并在那里选择响应,但允许前端将后端配置为指向特定模板?
我目前在后端使用 Restivus,在前端使用 Iron:Router,但如有必要,我愿意更改这两者。
activity-streams - ActivityPub 发件箱交付的收件箱分辨率
任何有 ActivityPub 协议经验的人可以为我澄清一些事情吗?对于服务器-服务器联合 (S2S),当某些东西被发送到远程关注者集合时,正确的交付逻辑是什么?
ActivityPub 规范的 7.1 说:
收件箱是通过首先检索目标参与者的 JSON-LD 表示,然后查找收件箱属性来确定的。如果收件人是 Collection 或 OrderedCollection,则服务器必须取消引用集合(使用用户的凭据)并发现集合中每个项目的收件箱
但这似乎会对远程服务器产生大量的 GET 请求:一个是为了获取 Collection 的 JSON-LD,然后一个是针对集合中的每个项目以检索其JSON-LD。如果远程集合被分页,那就更糟了。
规范的 7.1.1 说(强调我的):
当在发件箱中接收到对象时(对于同时支持客户端到服务器交互和服务器到服务器交互的服务器),服务器必须定位并传递到: to、bto、cc、bcc 或受众字段,如果它们的值是个人或集合由演员拥有。
这似乎与 7.1 相矛盾,因为它说服务器必须取消引用所有内容。
谁能解释我错过了什么?
rust - 使用 activitystreams crate 获取 Mastodon 配置文件的发件箱
我有一个 Mastodon URL,看起来像https://mastodon_domain/web/accounts/123
. 我能够从该 URL 中检索 JSON,使用纯 JSON 功能在 Python 中对其进行解析,并使用它做了一些有用的事情。现在我想用 Rust 和activitystreams crate 做同样的事情:
解析成功,但Person
对象没有output
属性。根据文档,它似乎隐藏在ApActorProperties
扩展中。但我不知道如何访问它。看起来我的 Rust 还不够好,所以如果有人能告诉我如何outbox
从成功解析的Person
实例中获取信息,我将不胜感激。
c# - 使用 System.Text.Json 有条件地将对象序列化为单个字符串
我正在使用 c# 开发 ActivityPub 实现,有时链接是像 url 链接一样的“字符串”,有时链接是具有 Link 子类型的对象。(链接:实体)
我想知道如果一组条件为真(只需将一个字符串写入编写器),是否有可能使用 System.Text.Json 将 Link 对象序列化为字符串,并将整个默认对象写入如果条件不成立,请编写器。
我试过遵循这个解决方案:How to use default serialization in a custom System.Text.Json JsonConverter? ,它仍然适用于代码小提琴,但不适用于我的实施,我不太清楚为什么。
有谁知道我可以如何调试它,或者更好的方法来确保Link : Entity
对象有时可以序列化为字符串?
(在这种情况下,我什至尝试将获取的默认 ctor 添加到 modifiedOptions) Reguardless,它表示没有为 Link 类映射数据。我还尝试将 JsonSerializeable 属性直接添加到 Link 类。
错误:
Metadata for type 'ActivityPub.Types.Link' was not provided to the serializer. The serializer method used does not support reflection-based creation of serialization-related type metadata. If using source generation, ensure that all root types passed to the serializer have been indicated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically.
我的基本代码库:https ://github.com/Meep-Tech/ActivityHub.Net/tree/collapse_links_during_serialization
测试代码: