5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-28 20:26:22 +00:00
panel/app/controllers/api/v1/webhooks/social_inbox_controller.rb

60 lines
1.6 KiB
Ruby
Raw Normal View History

2024-02-20 20:13:42 +00:00
# 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
2024-02-20 20:13:42 +00:00
# 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.
2024-02-20 20:13:42 +00:00
#
# El objeto del estado puede ser un objeto o une actore,
# dependiendo de la actividad.
def moderationqueued
process! :paused
2024-02-28 20:52:24 +00:00
2024-02-20 20:13:42 +00:00
head :accepted
end
# Cuando la Social Inbox acepta una actividad, la recibimos
# igual y la guardamos por si cambiamos de idea.
2024-02-20 20:13:42 +00:00
def onapproved
process! :approved
2024-02-20 20:13:42 +00:00
head :accepted
end
# Cuando la Social Inbox rechaza una actividad, la recibimos
# igual y la guardamos por si cambiamos de idea.
2024-02-20 20:13:42 +00:00
def onrejected
process! :rejected
2024-02-20 20:13:42 +00:00
head :accepted
end
2024-02-20 20:15:43 +00:00
private
# Envía la actividad para procesamiento por separado.
2024-02-20 20:15:43 +00:00
#
# @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)
2024-02-20 20:15:43 +00:00
end
2024-02-20 20:13:42 +00:00
end
end
end
end