class SimpleClient::Signature
Constants
- ATTR
Attributes
client_request_id[R]
timestamp[R]
Public Class Methods
new(params)
click to toggle source
# 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
Public Instance Methods
jsonify(model)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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