0
0
Fork 0

Add management of delivery availability in Federation settings (#15771)

* Add management of delivery availavility in Federation settings

* fix translate

* Remove useless object creation

* Fix DeepSource issue

* Add shortcut for all

* Fix DeepSource(skipcq)

* Change 'remove' to 'clear'

* Fix style

* Change class method name (exhausted_deliveries_key_by)
This commit is contained in:
Takeshi Umeda 2021-05-06 06:39:02 +09:00 committed by GitHub
parent d9ae3db8d5
commit 7cb34b32f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 180 additions and 5 deletions

View file

@ -17,6 +17,10 @@ class DeliveryFailureTracker
UnavailableDomain.find_by(domain: @host)&.destroy
end
def clear_failures!
Redis.current.del(exhausted_deliveries_key)
end
def days
Redis.current.scard(exhausted_deliveries_key) || 0
end
@ -25,6 +29,10 @@ class DeliveryFailureTracker
!UnavailableDomain.where(domain: @host).exists?
end
def exhausted_deliveries_days
Redis.current.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) }
end
alias reset! track_success!
class << self
@ -44,6 +52,24 @@ class DeliveryFailureTracker
def reset!(url)
new(url).reset!
end
def warning_domains
domains = Redis.current.keys(exhausted_deliveries_key_by('*')).map do |key|
key.delete_prefix(exhausted_deliveries_key_by(''))
end
domains - UnavailableDomain.all.pluck(:domain)
end
def warning_domains_map
warning_domains.index_with { |domain| Redis.current.scard(exhausted_deliveries_key_by(domain)) }
end
private
def exhausted_deliveries_key_by(host)
"exhausted_deliveries:#{host}"
end
end
private