Class: SimpleClient::Signature
- Inherits:
-
Object
- Object
- SimpleClient::Signature
- Defined in:
- lib/simple/signature.rb
Constant Summary collapse
- ATTR =
[ :api_key, :api_secret, :digest ]
Instance Attribute Summary collapse
-
#client_request_id ⇒ Object
readonly
Returns the value of attribute client_request_id.
-
#timestamp ⇒ Object
readonly
Returns the value of attribute timestamp.
Instance Method Summary collapse
-
#initialize(params) ⇒ Signature
constructor
A new instance of Signature.
- #jsonify(model) ⇒ Object
- #object_to_hash(obj) ⇒ Object
- #sign(payload = nil) ⇒ Object
Constructor Details
#initialize(params) ⇒ Signature
Returns a new instance of Signature.
18 19 20 21 22 23 |
# File 'lib/simple/signature.rb', line 18 def initialize(params) ATTR.each { |attr| instance_variable_set("@#{attr}", params[attr]) if params[attr] } @digest = "sha256" if !@digest @client_request_id = SecureRandom.uuid @timestamp = DateTime.now.strftime("%Q") end |
Instance Attribute Details
#client_request_id ⇒ Object (readonly)
Returns the value of attribute client_request_id.
16 17 18 |
# File 'lib/simple/signature.rb', line 16 def client_request_id @client_request_id end |
#timestamp ⇒ Object (readonly)
Returns the value of attribute timestamp.
16 17 18 |
# File 'lib/simple/signature.rb', line 16 def @timestamp end |
Instance Method Details
#jsonify(model) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/simple/signature.rb', line 32 def jsonify(model) return model if model.nil? || model.is_a?(String) local_body = nil if model.is_a?(Array) local_body = model.map{|m| object_to_hash(m) } else local_body = object_to_hash(model) end local_body.to_json end |
#object_to_hash(obj) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/simple/signature.rb', line 43 def object_to_hash(obj) if obj.respond_to?(:to_hash) obj.to_hash else obj end end |
#sign(payload = nil) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/simple/signature.rb', line 25 def sign(payload=nil) data = @api_key + @client_request_id + @timestamp data += jsonify(payload) if payload hmac = OpenSSL::HMAC.hexdigest(@digest, @api_secret, data) Base64.urlsafe_encode64(hmac) end |