@rf а кто знает где почитать как устроено взаимодействие серверов в федерации? Что бы не протокол, а простыми словами, вот пост, вот так распространяется, вот эти видят и т.д. Подозреваю сервера плеромы и мастодона еще и по разному реализуют взаимодействие.
@grishka ТАм дело в том, что тут
https://www.w3.org/TR/activitypub/#Overview
описано то, чего нет, так как эндпоинты inbox в мастодоне не реализованы судя по всему. Так что задачка, что мне нужна, а именно периодически ходить и проверять ответы в беседах что бы следить за их развитием, в данный момент простым способом не решается. Такие дела.
@3draven приблизительный эквивалент APшного инбокса в клиентском API это notifications, на котором сделана вкладка "Уведомления": https://docs.joinmastodon.org/methods/notifications/#get
Если в нём нет того, что надо, скорее всего это в Мастодоне вообще не реализовано.
@3draven а как в твоём представлении выглядело бы решение с инбоксом?
upd: поясню — если тебя интересует получать сообщения, о которых тебе уведомления не приходят (например, если твой тег убрали, убрав тебя из списка получателей), то в инбоксе этого сообщения тоже не будет, несмотря на привязанность к треду. Даже до твоего инстанса может не дойти, и быть доступным только с тех инстансов, обитатели которого тегнуты + с инстансов подписчиков автора ответа (если видимость ответа позволяет).
@dside читаешь инбокс с фильтром since-id или с даты. Оно показывает все, что тебе пришло в качестве ответов других юзеров с момента последней проверки. Читаешь outbox для добывания своих ответов в свои треды. Потом дополняешь локально сохраненные деревья в клиенте тем, что нашел. Сейчас так сделано примерно, но подпиской на стрим с уведомлениями мастодон сервера (вебсокет там). Проблема в том, что приложение периодически выключается и надо считывать посты, что были пока все было выключено.
@3draven м-м. Это звучит как прямое применение dismiss. Тяни все уведомления, dismiss'ай обработанные. Если приложение выключится — уведомления продолжат накапливаться на сервере.
@dside да, я об этом и написал. Не знаю что такое дисмис, но понятно. Я на java клиент написал :) Это несложно все. Костылем больше, костылем меньше.
@dside а, там лучше есть. Если я отменю нотификацию, то ее не получат другие клиенты насколько я понимаю.
Есть /api/v1/notifications и там параметр since_id и потом просто читаешь, что надо. Но я пока не выяснил есть ли в нотификациях уведомления об ответах где юзер не упомянут. То есть болтает двое в треде, упоминает друг друга, но не автора треда. Получит ли автор нотификацию я не знаю. Но тут дело в том, что и сервер такое сообщение может не получить (без подписок). Так что вероятно забью.
@3draven именно уведомление может и получат, оно же отправляется с сервера платформозависимой штукой вроде веб-пуша, UnifiedPush, FCM или APNS. Сервер может отправлять туда же и факт дисмисса, но похоже, что не делает этого (хотя это, возможно, и временно):
https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/notifications_controller.rb#L26-L29
(В модели Notification я на этот счёт тоже ничего не встретил.)
Угу, без тега не получит, насколько я знаю — см. выше по треду.
https://mastodon.ml/@dside/109654449528865203
Это можно достать разве что достав сообщение в JSON-LD (вышеприведённым способом с хедером и ссылкой на пост), из него коллекцию replies и обходить в ней все ветки, которые будут в том числе на других доменах. Действия несложные, но их много 👀
@dside @3draven в мастодоовском api есть метод context, который выдаёт весь тред целиком https://docs.joinmastodon.org/methods/statuses/#context
@shura @dside ну, тогда выходит придется читать этот паблик, выбирать только посты, которые ответы на посты в моих тредах и достраивать деревья. При этом сервер может вообще не получить посты если в них не упомянуты юзера с сервера или они не подписаны на автора ответа. Я это сейчас так понимаю. И при этом не знаю стоит ли паблик читать так как на груженом сервере он огромный. В общем думаю.
@shura @dside ну, например ты можешь написать клиент, который будет регать приложения на инстансах бесконечно и за пару месяцев забить базу мелкого инстанса под потолок :) Или вот регать аккаунты на разные почты автоматом и использовать федиверс как спамбота (не проверял, но должно сработать). Куда бы я ни залез в этот мастодон поглубже, везде косяки. Не говоря уж о крайне низком качестве документации конечно, это вообще песня :)
@shura @dside совершенно верно. Потому, в случае множества инстансов логично было бы аппрувить регистрацию приложений админу инстанса, создать ретеншен полиси. Это то, что приходит в голову немедленно...если писал что то сложнее бложика :) А если головой подумать, то и вообще можно много чего придумать. Или вот, к слову о ретеншене. Мастодон не умеет сам чистить кэш, это надо делать кроном по расписанию. То есть между вызовами крона случился пик активности и твой инстанс сдох :)
@shura @dside в зависимости от политики инстанса. Так же сейчас регистрации открыты где-то, где-то нет для аккаунтов. При этом, на самом деле регистрация приложений сейчас зачем нужна если ты можешь буквально каждый заход на сервер ее снова сделать через открытое всем ветрам апи? Каков смысл этого процесса сечас? Никакого, просто забить базу шоб було по сути.
@kurator88 @shura @dside да нет требований, я же написал, что кривое, но лучше все равно нет. Пишут и бесплатно отлично, просто так сложилось.
@3draven фейсбук - не распределённая система. Возможно капча и в мастодоне появится, просто он ещё не дорос
@dside