module Neutrino::AudiomaticRails::HMAC

Public Class Methods

check_hash_url(request) click to toggle source
# File lib/neutrino_audiomatic_hmac.rb, line 7
def self.check_hash_url(request)
  hash = request.params[:signature]
  url = request.url[/(.*)&signature/, 1]
  hash == Neutrino::AudiomaticRails::HMAC.gen_hash(url)
end
gen_hash(url) click to toggle source
# File lib/neutrino_audiomatic_hmac.rb, line 3
def self.gen_hash(url)
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('md5'), Rails.application.secrets.secret_key_base, url)
end
verify_response(request) click to toggle source
# File lib/neutrino_audiomatic_hmac.rb, line 19
def self.verify_response request
  request.body.rewind
  data = request.body.read
  verified = verify_webhook(data, request.headers["HTTP_X_NEUTRINO_AUDIOMATIC_HMAC_SHA256"])
end
verify_webhook(data, hmac_header) click to toggle source
# File lib/neutrino_audiomatic_hmac.rb, line 13
def self.verify_webhook(data, hmac_header)
  secret = ::Neutrino::Audiomatic.audiomatic_secret
  calculated_hmac = Digest::SHA1.hexdigest(data + ":" + secret)
  calculated_hmac == hmac_header
end