mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-24 16:36:22 +00:00
d7de351e1a
closes #15621 closes #15622 closes #15623 closes #15729 closes #15730 closes #15731 closes #15735 closes #15736 closes #15824
59 lines
1.6 KiB
Ruby
59 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Api
|
|
module V1
|
|
module Webhooks
|
|
# Recibe webhooks de la Social Inbox
|
|
#
|
|
# @see {https://www.w3.org/TR/activitypub/}
|
|
class SocialInboxController < BaseController
|
|
include Api::V1::Webhooks::Concerns::WebhookConcern
|
|
|
|
# Validar que el token sea correcto
|
|
before_action :usuarie
|
|
|
|
# Cuando una actividad ingresa en la cola de moderación, la
|
|
# recibimos por acá
|
|
#
|
|
# Vamos a recibir Create, Update, Delete, Follow, Undo,
|
|
# Announce, Like y obtener el objeto dentro de cada una para
|
|
# guardar un estado asociado al sitio.
|
|
#
|
|
# El objeto del estado puede ser un objeto o une actore,
|
|
# dependiendo de la actividad.
|
|
def moderationqueued
|
|
process! :paused
|
|
|
|
head :accepted
|
|
end
|
|
|
|
# Cuando la Social Inbox acepta una actividad, la recibimos
|
|
# igual y la guardamos por si cambiamos de idea.
|
|
def onapproved
|
|
process! :approved
|
|
|
|
head :accepted
|
|
end
|
|
|
|
# Cuando la Social Inbox rechaza una actividad, la recibimos
|
|
# igual y la guardamos por si cambiamos de idea.
|
|
def onrejected
|
|
process! :rejected
|
|
|
|
head :accepted
|
|
end
|
|
|
|
private
|
|
|
|
# Envía la actividad para procesamiento por separado.
|
|
#
|
|
# @param initial_state [Symbol]
|
|
def process!(initial_state)
|
|
::ActivityPub::ProcessJob
|
|
.set(wait: ApplicationJob.random_wait)
|
|
.perform_later(site: site, body: request.raw_post, initial_state: initial_state)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|