amelioration(balancer_delivery_method): implemente le fait de forcer la methode de delivery au niveau de notre balancer de fournisseur demail

This commit is contained in:
Martin 2023-01-11 09:35:41 +01:00 committed by LeSim
parent 02f411b3b5
commit 733ba01695
2 changed files with 51 additions and 0 deletions

View file

@ -14,6 +14,7 @@
#
# Be sure to restart your server when you modify this file.
class BalancerDeliveryMethod
FORCE_DELIVERY_METHOD_HEADER = 'X-deliver-with'
# Allows configuring the random number generator used for selecting a delivery method,
# mostly for testing purposes.
mattr_accessor :random, default: Random.new
@ -39,7 +40,13 @@ class BalancerDeliveryMethod
private
def force_delivery_method?(mail)
@delivery_methods.keys.map(&:to_s).include?(mail[FORCE_DELIVERY_METHOD_HEADER]&.value)
end
def delivery_method(mail)
return mail[FORCE_DELIVERY_METHOD_HEADER].value.to_sym if force_delivery_method?(mail)
@delivery_methods
.flat_map { |delivery_method, weight| [delivery_method] * weight }
.sample(random: self.class.random)