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:
parent
02f411b3b5
commit
733ba01695
2 changed files with 51 additions and 0 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue