@rf а кто знает где почитать как устроено взаимодействие серверов в федерации? Что бы не протокол, а простыми словами, вот пост, вот так распространяется, вот эти видят и т.д. Подозреваю сервера плеромы и мастодона еще и по разному реализуют взаимодействие.

Пост (Note) оборачивается в активити (Create) и в виде json-объекта отправляется в инбоксы подписчиков. Сервер каждого подписчика проверяет подпись запроса и кладёт пост в локальную БД. В общем-то всё.

Когда-нибудь я допишу эту статью.

Follow

@grishka ТАм дело в том, что тут
w3.org/TR/activitypub/#Overvie

описано то, чего нет, так как эндпоинты inbox в мастодоне не реализованы судя по всему. Так что задачка, что мне нужна, а именно периодически ходить и проверять ответы в беседах что бы следить за их развитием, в данный момент простым способом не решается. Такие дела.

· · Web · 2 · 0 · 0

Roman, ты хочешь c2s что ли? Да, на него все забили. Кажется, что тебе нужно клиентское апи мастодона https://docs.joinmastodon.org/api/guidelines/

@grishka А в клиентском апи мастодона тоже нет такого.

@3draven приблизительный эквивалент APшного инбокса в клиентском API это notifications, на котором сделана вкладка "Уведомления": docs.joinmastodon.org/methods/

Если в нём нет того, что надо, скорее всего это в Мастодоне вообще не реализовано.

@grishka

@dside @grishka да, я так и подумал пока что, что придется нотификации читать и по ним восстанавливать треды. Либо timelines/public
Подумаю в следующий выходной на тему костылей :)

@3draven а как в твоём представлении выглядело бы решение с инбоксом?

upd: поясню — если тебя интересует получать сообщения, о которых тебе уведомления не приходят (например, если твой тег убрали, убрав тебя из списка получателей), то в инбоксе этого сообщения тоже не будет, несмотря на привязанность к треду. Даже до твоего инстанса может не дойти, и быть доступным только с тех инстансов, обитатели которого тегнуты + с инстансов подписчиков автора ответа (если видимость ответа позволяет).

@dside читаешь инбокс с фильтром since-id или с даты. Оно показывает все, что тебе пришло в качестве ответов других юзеров с момента последней проверки. Читаешь outbox для добывания своих ответов в свои треды. Потом дополняешь локально сохраненные деревья в клиенте тем, что нашел. Сейчас так сделано примерно, но подпиской на стрим с уведомлениями мастодон сервера (вебсокет там). Проблема в том, что приложение периодически выключается и надо считывать посты, что были пока все было выключено.

@3draven м-м. Это звучит как прямое применение dismiss. Тяни все уведомления, dismiss'ай обработанные. Если приложение выключится — уведомления продолжат накапливаться на сервере.

@dside да, я об этом и написал. Не знаю что такое дисмис, но понятно. Я на java клиент написал :) Это несложно все. Костылем больше, костылем меньше.

@dside а, там лучше есть. Если я отменю нотификацию, то ее не получат другие клиенты насколько я понимаю.
Есть /api/v1/notifications и там параметр since_id и потом просто читаешь, что надо. Но я пока не выяснил есть ли в нотификациях уведомления об ответах где юзер не упомянут. То есть болтает двое в треде, упоминает друг друга, но не автора треда. Получит ли автор нотификацию я не знаю. Но тут дело в том, что и сервер такое сообщение может не получить (без подписок). Так что вероятно забью.

@3draven именно уведомление может и получат, оно же отправляется с сервера платформозависимой штукой вроде веб-пуша, UnifiedPush, FCM или APNS. Сервер может отправлять туда же и факт дисмисса, но похоже, что не делает этого (хотя это, возможно, и временно):
github.com/mastodon/mastodon/b
(В модели Notification я на этот счёт тоже ничего не встретил.)

Угу, без тега не получит, насколько я знаю — см. выше по треду.
mastodon.ml/@dside/10965444952
Это можно достать разве что достав сообщение в JSON-LD (вышеприведённым способом с хедером и ссылкой на пост), из него коллекцию replies и обходить в ней все ветки, которые будут в том числе на других доменах. Действия несложные, но их много 👀

@dside @3draven в мастодоовском api есть метод context, который выдаёт весь тред целиком docs.joinmastodon.org/methods/

@shura @dside это да, но мне надо все треды, причем только с определенного айди. Потому как тредов много и все читать долго.

@3draven тогда только ленту собирать и по ленте ходить
@dside

@shura @dside да, я так и подумал, что придется на ней костылить. А под "по ней ходить" ты что имел в виду, там что то еще дополнительно дергать надо, одной ленты мало?

@3draven лента не будет показывать посты, в которых тебя не упомянули, вопрос ведь именно с этого начался
@dside

@shura @dside так, я запутался. А что она показывает тогда? Я думал, что просто поток всех постов сервера, нет?

@3draven а, правильно, я перепутал, думал мы про home говорим. В public должны валить все публичные посты, но туда не попадают подзамочные.
@dside

@shura @dside ну, тогда выходит придется читать этот паблик, выбирать только посты, которые ответы на посты в моих тредах и достраивать деревья. При этом сервер может вообще не получить посты если в них не упомянуты юзера с сервера или они не подписаны на автора ответа. Я это сейчас так понимаю. И при этом не знаю стоит ли паблик читать так как на груженом сервере он огромный. В общем думаю.

Show newer
Sign in to participate in the conversation
MustUdon

I like Twitter, but, Mastodon it is so excited! Feel free to register it is server just for fun! Usefull links https://instances.social https://www.reddit.com/r/Mastodon/comments/yugh2o/some_useful_mastodon_lists/?utm_source=share&utm_medium=web2x&context=3