Email or username:

Password:

Forgot your password?
Top-level
iliazeus

Вторая крупная проблема — непоследовательность в том, какие API инстансы считают публичными, а какие нет.

Например, у Мастодона есть "защищенный" режим, когда любой ActivityPub-запрос требует подписи приватным ключом аккаунта. Фактически, это значит, что запросить что-либо по протоколу AP может только другой инстанс, по команде какого-либо пользователя этого инстанса.

И все бы ничего, но при этом у таких Мастодонов остается открытой собственное мастодоновское API! Через которое можно без какой-либо авторизации получить любые public и unlisted посты!

Из-за этого и подобных ограничений я не мог просто использовать "голый" ActivityPub, как хотел изначально — мне пришлось писать адаптеры и фолбеки на API Mastodon и Misskey. И, вероятно, придется делать так еще и для других серверов.

2 comments
iliazeus

Еще одна особенность, которая меня раздражала — почти никакие инстансы, кроме Mastodon, не отдают в ActivityPub-объектах коллекцию replies.

Для коммуникаций сервер-сервер это, в каком-то смысле, даже можно понять — другой инстанс все равно получает большинство ответов через федерацию, и может связать их по полю inReplyTo. Но для коммуникаций сервер-клиент это отвратительно — мне приходится делать фоллбеки на API конкрентных реализаций, через которые все реплаи обычно доступны.

iliazeus

С необходимостью ходить в API конкретных реализаций связана еще одна проблема: ID сущностей в этих API и в ActivityPub зачастую совершенно разные!

Из-за этого мне приходится костылями вытаскивать "внутренние" id, и не для всех серверов я умею это делать. Для некоторых, например, мне приходится делать запрос на URI из ActivityPub-объекта и потом смотреть, на какой URL меня редиректнет — в этом URL будет тот самый внутренний ID.

А вот что делать для Френдики, я так и не придумал. Буду рад, если кто подскажет, кстати.

С необходимостью ходить в API конкретных реализаций связана еще одна проблема: ID сущностей в этих API и в ActivityPub зачастую совершенно разные!

Из-за этого мне приходится костылями вытаскивать "внутренние" id, и не для всех серверов я умею это делать. Для некоторых, например, мне приходится делать запрос на URI из ActivityPub-объекта и потом смотреть, на какой URL меня редиректнет — в этом URL будет тот самый внутренний ID.

Go Up