Class: M2mKeygen::RackValidator
- Inherits:
-
Object
- Object
- M2mKeygen::RackValidator
- Extended by:
- T::Sig
- Defined in:
- lib/m2m_keygen/rack_validator.rb
Instance Attribute Summary collapse
-
#header_name ⇒ Object
readonly
Returns the value of attribute header_name.
-
#signature ⇒ Object
readonly
Returns the value of attribute signature.
Instance Method Summary collapse
-
#initialize(secret, algorithm: 'sha512', header_name: 'X-Signature') ⇒ RackValidator
constructor
A new instance of RackValidator.
- #validate(req) ⇒ Object
Constructor Details
#initialize(secret, algorithm: 'sha512', header_name: 'X-Signature') ⇒ RackValidator
Returns a new instance of RackValidator.
16 17 18 19 |
# File 'lib/m2m_keygen/rack_validator.rb', line 16 def initialize(secret, algorithm: 'sha512', header_name: 'X-Signature') @header_name = T.let("HTTP_#{header_name.tr('-', '_').upcase}", String) @signature = T.let(Signature.new(secret, algorithm: algorithm), Signature) end |
Instance Attribute Details
#header_name ⇒ Object (readonly)
Returns the value of attribute header_name.
13 14 15 |
# File 'lib/m2m_keygen/rack_validator.rb', line 13 def header_name @header_name end |
#signature ⇒ Object (readonly)
Returns the value of attribute signature.
10 11 12 |
# File 'lib/m2m_keygen/rack_validator.rb', line 10 def signature @signature end |
Instance Method Details
#validate(req) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/m2m_keygen/rack_validator.rb', line 22 def validate(req) # This will cover the case when Rails is used. req = Rack::Request.new(req.env) params = (req.params || {}).merge(parse_json_body(req)) !!@signature.validate( params: params, verb: req.request_method || 'get', path: req.path || '/', signature: req.env['HTTP_X_SIGNATURE'] || '', ) && params['expiry'] && params['expiry'].to_i > Time.now.to_i && params['expiry'].to_i < Time.now.to_i + 120 end |