Sha256: 7ad1d769ec294e8e82da6f533a248a4737baddfd1ea223ed07fd485d414a5565

Contents?: true

Size: 1018 Bytes

Versions: 22

Compression:

Stored size: 1018 Bytes

Contents

class Delivery < ActiveRecord::Base
  STATUSES = %w(pending scheduled sent).freeze
  enum status: STATUSES.zip(STATUSES).to_h

  belongs_to :hook

  validates :url, presence: true, url: {no_local: true, allow_blank: true}
  validates :content_type, presence: true

  serialize :response_headers, JSON

  def schedule!
    DeliverHookJob.perform_later(self)
    scheduled!
  end

  def send!
    update!(response: http.post(url, payload), status: 'sent', delivered_at: Time.now)
  end

  def response=(response)
    self.response_code = response.status
    self.response_headers = response.headers
    self.response_body = response.body
  end

  private

  def http
    Faraday::Connection.new do |connection|
      connection.headers = headers
      connection.adapter Faraday.default_adapter
    end
  end

  def headers
    {
      'User-Agent' => 'Shipit Webhook',
      'Content-Type' => content_type,
      'X-Shipit-Event' => event,
      'X-Shipit-Delivery' => id.to_s,
      'Accept' => '*/*',
    }
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
shipit-engine-0.5.2 app/models/delivery.rb
shipit-engine-0.5.1 app/models/delivery.rb
shipit-engine-0.5.0 app/models/delivery.rb
shipit-engine-0.4.10 app/models/delivery.rb
shipit-engine-0.4.9 app/models/delivery.rb
shipit-engine-0.4.8 app/models/delivery.rb
shipit-engine-0.4.7 app/models/delivery.rb
shipit-engine-0.4.6 app/models/delivery.rb
shipit-engine-0.4.5 app/models/delivery.rb
shipit-engine-0.4.4 app/models/delivery.rb
shipit-engine-0.4.3 app/models/delivery.rb
shipit-engine-0.4.2 app/models/delivery.rb
shipit-engine-0.4.1 app/models/delivery.rb
shipit-engine-0.4.0 app/models/delivery.rb
shipit-engine-0.3.1 app/models/delivery.rb
shipit-engine-0.3.0 app/models/delivery.rb
shipit-engine-0.2.3 app/models/delivery.rb
shipit-engine-0.2.2 app/models/delivery.rb
shipit-engine-0.2.1 app/models/delivery.rb
shipit-engine-0.2.0 app/models/delivery.rb