module ActiveHook::Client::Recieve
Constants
- REQUEST_HEADERS
Attributes
request[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/activehook/client/recieve.rb, line 13 def initialize(options = {}) options.each { |key, value| send("#{key}=", value) } end
Public Instance Methods
payload()
click to toggle source
# File lib/activehook/client/recieve.rb, line 25 def payload parsed_body['payload'] rescue nil end
server_valid?()
click to toggle source
# File lib/activehook/client/recieve.rb, line 21 def server_valid? @server_valid ||= validate_server end
signature_valid?()
click to toggle source
# File lib/activehook/client/recieve.rb, line 17 def signature_valid? @signature_valid ||= validate_signature end
validated_payload()
click to toggle source
# File lib/activehook/client/recieve.rb, line 31 def validated_payload raise StandardError, 'Webhook is invalid.' unless signature_valid? @payload end
Private Instance Methods
hook_id()
click to toggle source
# File lib/activehook/client/recieve.rb, line 44 def hook_id parsed_body['hook_id'] end
hook_json()
click to toggle source
# File lib/activehook/client/recieve.rb, line 75 def hook_json { id: hook_id, key: hook_key }.to_json end
hook_key()
click to toggle source
# File lib/activehook/client/recieve.rb, line 48 def hook_key parsed_body['hook_key'] end
hook_signature()
click to toggle source
# File lib/activehook/client/recieve.rb, line 56 def hook_signature @request.env['HTTP_X-Webhook-Signature'] end
hook_uri()
click to toggle source
# File lib/activehook/client/recieve.rb, line 52 def hook_uri @hook_uri ||= URI.parse(self.class::VALIDATION_URI) end
parsed_body()
click to toggle source
# File lib/activehook/client/recieve.rb, line 38 def parsed_body @parsed_body ||= JSON.parse(request.body.read) rescue {} end
validate_server()
click to toggle source
# File lib/activehook/client/recieve.rb, line 60 def validate_server http = Net::HTTP.new(hook_uri.host, hook_uri.port) response = http.post(hook_uri.path, hook_json, REQUEST_HEADERS) response.code.to_i == 200 ? true : false rescue false end
validate_signature()
click to toggle source
# File lib/activehook/client/recieve.rb, line 68 def validate_signature signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), self.class::VALIDATION_TOKEN, payload) Rack::Utils.secure_compare(signature, hook_signature) rescue false end