forked from asonix/mastodon
must be added to the Sidekiq invokation in your systemd file The pull queue will handle link crawling, thread resolving, and OStatus processing. Such tasks are more likely to hang for a longer time (due to network requests) so it is more sensible to not make the "in-house" tasks wait for them.
54 lines
1.1 KiB
Ruby
54 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'csv'
|
|
|
|
class ImportWorker
|
|
include Sidekiq::Worker
|
|
|
|
sidekiq_options queue: 'pull', retry: false
|
|
|
|
def perform(import_id)
|
|
import = Import.find(import_id)
|
|
|
|
case import.type
|
|
when 'blocking'
|
|
process_blocks(import)
|
|
when 'following'
|
|
process_follows(import)
|
|
end
|
|
|
|
import.destroy
|
|
end
|
|
|
|
private
|
|
|
|
def process_blocks(import)
|
|
from_account = import.account
|
|
|
|
CSV.foreach(import.data.path) do |row|
|
|
next if row.size != 1
|
|
|
|
begin
|
|
target_account = FollowRemoteAccountService.new.call(row[0])
|
|
next if target_account.nil?
|
|
BlockService.new.call(from_account, target_account)
|
|
rescue Goldfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError
|
|
next
|
|
end
|
|
end
|
|
end
|
|
|
|
def process_follows(import)
|
|
from_account = import.account
|
|
|
|
CSV.foreach(import.data.path) do |row|
|
|
next if row.size != 1
|
|
|
|
begin
|
|
FollowService.new.call(from_account, row[0])
|
|
rescue Goldfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError
|
|
next
|
|
end
|
|
end
|
|
end
|
|
end
|