class RedownloadMediaWorker
include Sidekiq::Worker
include ExponentialBackoff
+ include JsonLdHelper
sidekiq_options queue: 'pull', retry: 3
media_attachment.download_thumbnail!
media_attachment.save
rescue ActiveRecord::RecordNotFound
- true
+ # Do nothing
+ rescue Mastodon::UnexpectedResponseError => e
+ response = e.response
+
+ if response_error_unsalvageable?(response)
+ # Give up
+ else
+ raise e
+ end
end
end
class RateLimitExceededError < Error; end
class UnexpectedResponseError < Error
+ attr_reader :response
+
def initialize(response = nil)
+ @response = response
+
if response.respond_to? :uri
super("#{response.uri} returned code #{response.code}")
else