class Nexmo::Rack::VerifySignature
Public Class Methods
new(app)
click to toggle source
# File lib/nexmo_rack/verify_signature.rb, line 5 def initialize(app) @app = app @nexmo = Nexmo::Client.new( signature_secret: signature_secret, signature_method: signature_method ) end
Public Instance Methods
call(env)
click to toggle source
# File lib/nexmo_rack/verify_signature.rb, line 13 def call(env) req = ::Rack::Request.new(env) # Duplicate the request params in case nexmo_client.check() modifies them params = req.params.dup # If there is no `sig` field, ignore this middleware unless we explicitly # require it to be present unless ENV['NEXMO_SIGNATURE_REQUIRED'] return @app.call(env) unless req.params['sig'] end # Otherwise calculate the signature and check that it matches if req.params['sig'] && @nexmo.signature.check(params) @app.call(env) else [403, {}, ['']] end end
Private Instance Methods
signature_method()
click to toggle source
# File lib/nexmo_rack/verify_signature.rb, line 45 def signature_method if ENV['NEXMO_SIGNATURE_METHOD'] ENV['NEXMO_SIGNATURE_METHOD'] elsif defined?(Rails) && Rails.application.credentials.nexmo Rails.application.credentials.nexmo[:signature_method] else raise "No signature method found for Nexmo::Rack::VerifySignature" end end
signature_secret()
click to toggle source
# File lib/nexmo_rack/verify_signature.rb, line 35 def signature_secret if ENV['NEXMO_SIGNATURE_SECRET'] ENV['NEXMO_SIGNATURE_SECRET'] elsif defined?(Rails) && Rails.application.credentials.nexmo Rails.application.credentials.nexmo[:signature_secret] else raise "No signature credentials found for Nexmo::Rack::VerifySignature" end end