Sha256: 8df74232be9410d5dd0a225dc303b2ef228b2bd8a6a50aba5150cbdca4baec79
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
class Webhooks::Outgoing::Delivery < ActiveRecord::Base belongs_to :endpoint, class_name: "Webhooks::Outgoing::Endpoint" belongs_to :event, class_name: "Webhooks::Outgoing::Event" has_one :team, through: :endpoint ATTEMPT_SCHEDULE = { 1 => 15.seconds, 2 => 1.minute, 3 => 5.minutes, 4 => 15.minutes, 5 => 1.hour, } has_many :delivery_attempts, class_name: "Webhooks::Outgoing::DeliveryAttempt", dependent: :destroy, foreign_key: :delivery_id def label_string event.short_uuid end def next_reattempt_delay ATTEMPT_SCHEDULE[attempt_count] end def deliver_async if still_attempting? Webhooks::Outgoing::DeliveryJob.set(wait: next_reattempt_delay).perform_later(self) end end def deliver if delivery_attempts.create.attempt touch(:delivered_at) else deliver_async end end def attempt_count delivery_attempts.count end def delivered? delivered_at.present? end def still_attempting? return false if delivered? attempt_count < max_attempts end def failed? !(delivered? || still_attempting?) end def name event.short_uuid end def max_attempts ATTEMPT_SCHEDULE.keys.max end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bullet_train-outgoing_webhooks-1.0.1 | lib/models/webhooks/outgoing/delivery.rb |
bullet_train-outgoing_webhooks-1.0.0 | lib/models/webhooks/outgoing/delivery.rb |