Sha256: 50f096cf23bc09673ce8dfebe636dede6ceb8b6b01e1ef3322b0af6369afec8a
Contents?: true
Size: 1 KB
Versions: 1
Compression:
Stored size: 1 KB
Contents
require "twilio-ruby" module Rack class TwilioValidator def initialize(app, options = {}) @app = app @options = options @auth_token = options.fetch(:auth_token) @app end def call(env) self.dup._call(env) end def _call(env) @request = Rack::Request.new(env) if unprotected_path? || request_validator.validate(@request.url, @request.params, env['HTTP_X_TWILIO_SIGNATURE']) @app.call(env) else response = ::Twilio::TwiML::Response.new do |r| r.Say("Unable to authenticate request. Please try again.") end [401, { "Content-Type" => "application/xml" }, [response.text]] end end private def protected_path? protected_path = @options.fetch(:protected_path, "/") @request.path =~ %r/^#{protected_path}/ end def unprotected_path? ! protected_path? end def request_validator @validator ||= ::Twilio::Util::RequestValidator.new(@auth_token) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rack-twilio-validator-0.0.1 | lib/rack/twilio-validator.rb |