Class: SpreeCmCommissioner::InventoryHolds::ValidateLimits
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::InventoryHolds::ValidateLimits
- Extended by:
- ServiceModuleThrowable
- Includes:
- Spree::ServiceModule::Base
- Defined in:
- app/services/spree_cm_commissioner/inventory_holds/validate_limits.rb
Constant Summary collapse
- ExceededActiveHoldsError =
Class.new(StandardError)
- IpRateLimitError =
Class.new(StandardError)
- HoldCooldownError =
Class.new(StandardError)
- MAX_ACTIVE_HOLDS_PER_USER =
ENV.fetch('MAX_ACTIVE_HOLDS_PER_USER', '3').to_i
- COOLDOWN_AFTER_EXPIRY =
ENV.fetch('HOLD_COOLDOWN_AFTER_EXPIRY_IN_MINUTES', '2').to_i.minutes
- DEFAULT_HOLDS_PER_IP_PER_HOUR =
ENV.fetch('MAX_HOLDS_PER_IP_PER_HOUR', '5').to_i
Instance Method Summary collapse
-
#call(order:) ⇒ Object
Validates all inventory hold limits for the given order.
Methods included from ServiceModuleThrowable
Instance Method Details
#call(order:) ⇒ Object
Validates all inventory hold limits for the given order
16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/services/spree_cm_commissioner/inventory_holds/validate_limits.rb', line 16 def call(order:) validate_user_hold_limits!(order) if order.user.present? validate_ip_rate_limit!(order) validate_cooldown!(order) success(nil) rescue StandardError => e error = { error_type: e.class.name.demodulize, order_id: order.id, error: e. } CmAppLogger.error(label: "#{self.class.name}#call failed", data: error) failure(nil, e.) end |