Sha256: b88f9e62707d6412e098c7911c2881109b6af52c431f3e4e1deec9f613e3faf4
Contents?: true
Size: 1015 Bytes
Versions: 1
Compression:
Stored size: 1015 Bytes
Contents
# typed: strict require "rack" module M2mKeygen class RackValidator extend T::Sig sig { returns(Signature) } attr_reader :signature sig { returns(String) } attr_reader :header_name sig { params(secret: String, algorithm: String, header_name: String).void } 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 sig { params(req: T.untyped).returns(T::Boolean) } def validate(req) # This will cover the case when Rails is used. req = Rack::Request.new(req.env) @signature.validate( params: req.params, verb: req.request_method, path: req.path, signature: req.env["HTTP_X_SIGNATURE"] ) && req.params["expiry"] && req.params["expiry"].to_i > Time.now.to_i && req.params["expiry"].to_i < Time.now.to_i + 120 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
m2m_keygen-0.4.1 | lib/m2m_keygen/rack_validator.rb |