module Webhooks::Outgoing::DeliverySupport
def attempt_count
def attempt_count delivery_attempts.count end
def deliver
def deliver # TODO If we ever do away with the `async: true` default for webhook generation, then I believe this needs to # change otherwise we'd be attempting the first delivery of webhooks inline. if delivery_attempts.create.attempt touch(:delivered_at) else deliver_async end end
def deliver_async
def deliver_async if still_attempting? Webhooks::Outgoing::DeliveryJob.set(wait: next_reattempt_delay).perform_later(self) end end
def delivered?
def delivered? delivered_at.present? end
def failed?
def failed? !(delivered? || still_attempting?) end
def label_string
def label_string event.short_uuid end
def max_attempts
def max_attempts ATTEMPT_SCHEDULE.keys.max end
def name
def name event.short_uuid end
def next_reattempt_delay
def next_reattempt_delay ATTEMPT_SCHEDULE[attempt_count] end
def still_attempting?
def still_attempting? return false if delivered? attempt_count < max_attempts end