mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-22 20:06:22 +00:00
BREAKING CHANGE: renombrar instancias por hostnames
This commit is contained in:
parent
7521f598a6
commit
15800e1096
6 changed files with 28 additions and 10 deletions
|
@ -11,12 +11,12 @@ class ActivityPub
|
||||||
ActivityPub::Fediblock.find_each do |fediblock|
|
ActivityPub::Fediblock.find_each do |fediblock|
|
||||||
fediblock.process!
|
fediblock.process!
|
||||||
|
|
||||||
instances_added = fediblock.instances - fediblock.instances_was
|
hostnames_added = fediblock.hostnames - fediblock.hostnames_was
|
||||||
|
|
||||||
# No hacer nada si no cambió con respecto a la versión anterior
|
# No hacer nada si no cambió con respecto a la versión anterior
|
||||||
next if instances_added.empty?
|
next if hostnames_added.empty?
|
||||||
|
|
||||||
ActivityPub::FediblockUpdatedJob.perform_later(fediblock: fediblock, hostnames: instances_added)
|
ActivityPub::FediblockUpdatedJob.perform_later(fediblock: fediblock, hostnames: hostnames_added)
|
||||||
rescue ActivityPub::Fediblock::FediblockDownloadError => e
|
rescue ActivityPub::Fediblock::FediblockDownloadError => e
|
||||||
ExceptionNotifier.notify_exception(e, data: { fediblock: fediblock.title })
|
ExceptionNotifier.notify_exception(e, data: { fediblock: fediblock.title })
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,14 +2,17 @@
|
||||||
|
|
||||||
# Se encarga de mantener sincronizadas las listas de instancias
|
# Se encarga de mantener sincronizadas las listas de instancias
|
||||||
# de los fediblocks con los sitios que las tengan activadas.
|
# de los fediblocks con los sitios que las tengan activadas.
|
||||||
|
#
|
||||||
|
# También va a asociar las listas con todos los sitios que tengan la
|
||||||
|
# Social Inbox habilitada.
|
||||||
class ActivityPub
|
class ActivityPub
|
||||||
class FediblockUpdatedJob < ApplicationJob
|
class FediblockUpdatedJob < ApplicationJob
|
||||||
self.priority = 50
|
self.priority = 50
|
||||||
|
|
||||||
# @param :fediblock [ActivityPub::Fediblock]
|
# @param :fediblock [ActivityPub::Fediblock]
|
||||||
# @param :instances [Array<String>]
|
# @param :hostnames [Array<String>]
|
||||||
def perform(fediblock:, hostnames:)
|
def perform(fediblock:, hostnames:)
|
||||||
instances = ActivityPub::Instance.where(hostname: instances)
|
instances = ActivityPub::Instance.where(hostname: hostnames)
|
||||||
|
|
||||||
# Todos los sitios con la Social Inbox habilitada
|
# Todos los sitios con la Social Inbox habilitada
|
||||||
Site.where(id: DeploySocialDistributedPress.pluck(:site_id)).find_each do |site|
|
Site.where(id: DeploySocialDistributedPress.pluck(:site_id)).find_each do |site|
|
||||||
|
@ -19,7 +22,7 @@ class ActivityPub
|
||||||
# No hace nada con los deshabilitados
|
# No hace nada con los deshabilitados
|
||||||
next unless fediblock_state.enabled?
|
next unless fediblock_state.enabled?
|
||||||
|
|
||||||
ActivityPub::InstanceModerationJob.perform_later(site: site, hostnames: instances)
|
ActivityPub::InstanceModerationJob.perform_later(site: site, hostnames: hostnames)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,6 +43,11 @@ class ActivityPub
|
||||||
@client ||= Client.new
|
@client ||= Client.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Todas las instancias de este fediblock
|
||||||
|
def instances
|
||||||
|
ActivityPub::Instance.where(hostname: hostnames)
|
||||||
|
end
|
||||||
|
|
||||||
# Descarga la lista y crea las instancias con el estado necesario
|
# Descarga la lista y crea las instancias con el estado necesario
|
||||||
def process!
|
def process!
|
||||||
response = client.get(download_url)
|
response = client.get(download_url)
|
||||||
|
@ -53,7 +58,7 @@ class ActivityPub
|
||||||
csv = response.parsed_response
|
csv = response.parsed_response
|
||||||
process_csv! csv
|
process_csv! csv
|
||||||
|
|
||||||
update(instances: csv.map { |r| r[hostname_header] })
|
update(hostnames: csv.map { |r| r[hostname_header] })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,6 @@
|
||||||
|
|
||||||
%dl.mb-0
|
%dl.mb-0
|
||||||
%dt.d-inline= t('.instances_blocked')
|
%dt.d-inline= t('.instances_blocked')
|
||||||
%dd.d-inline.font-weight-normal= blocklist.instances.count
|
%dd.d-inline.font-weight-normal= blocklist.hostnames.count
|
||||||
%p.mb-0.font-weight-normal
|
%p.mb-0.font-weight-normal
|
||||||
%a{ href: blocklist.url }= know_more
|
%a{ href: blocklist.url }= know_more
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# Cambia el nombre de la columna para que podamos obtener todas las
|
||||||
|
# instancias de un fediblock
|
||||||
|
class RenameFediblockInstancesToHostnames < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
rename_column :activity_pub_fediblocks, :instances, :hostnames
|
||||||
|
end
|
||||||
|
end
|
|
@ -514,7 +514,7 @@ CREATE TABLE public.activity_pub_fediblocks (
|
||||||
url character varying NOT NULL,
|
url character varying NOT NULL,
|
||||||
download_url character varying NOT NULL,
|
download_url character varying NOT NULL,
|
||||||
format character varying NOT NULL,
|
format character varying NOT NULL,
|
||||||
instances jsonb DEFAULT '[]'::jsonb
|
hostnames jsonb DEFAULT '[]'::jsonb
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -2615,6 +2615,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||||
('20240226133022'),
|
('20240226133022'),
|
||||||
('20240226134335'),
|
('20240226134335'),
|
||||||
('20240227134845'),
|
('20240227134845'),
|
||||||
('20240227142019');
|
('20240227142019'),
|
||||||
|
('20240228171335');
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue