Sha256: 01d138363107e032460ab51ce667b80ca20ecf5f95dfb2926f3b2e0edbb73ebd

Contents?: true

Size: 758 Bytes

Versions: 1

Compression:

Stored size: 758 Bytes

Contents

require 'webhook_handler/version'
require 'sidekiq'
require 'rack'

module WebhookHandler
  attr_reader :request
  attr_reader :response

  def self.included(klass)
    klass.extend ClassMethods
    klass.send(:include, Sidekiq::Worker)
  end

  module ClassMethods
    def call(env)
      new.call(env)
    end
  end

  def call(env)
    @request = Rack::Request.new(env)
    @response = Rack::Response.new

    if request.get?
      response.write('Send a POST request to this URL to trigger the webhook')
    elsif request.post?
      if respond_to?(:handle_webhook)
        send(:handle_webhook)
      else
        _handle_webhook
      end
    end

    response.finish
  end

  def _handle_webhook
    response.write(self.class.perform_async)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
webhook_handler-0.4.0 lib/webhook_handler.rb