Module: MAuth::Client::Signer

Included in:
MAuth::Client
Defined in:
lib/mauth/client.rb

Overview

methods to sign requests and responses. part of MAuth::Client

Instance Method Summary collapse

Instance Method Details

#signature(object, attributes = {}) ⇒ Object

takes a signable object (outgoing request or response). returns a mauth signature string for that object.



272
273
274
275
276
# File 'lib/mauth/client.rb', line 272

def signature(object, attributes = {})
  assert_private_key(UnableToSignError.new("mAuth client cannot sign without a private key!"))
  attributes = { time: Time.now.to_i.to_s, app_uuid: client_app_uuid }.merge(attributes)
  signature = Base64.encode64(private_key.private_encrypt(object.string_to_sign(attributes))).delete("\n")
end

#signed(object, attributes = {}) ⇒ Object

takes an outgoing request or response object, and returns an object of the same class whose headers are updated to include mauth’s signature headers



258
259
260
# File 'lib/mauth/client.rb', line 258

def signed(object, attributes = {})
  object.merge_headers(signed_headers(object, attributes))
end

#signed_headers(object, attributes = {}) ⇒ Object

takes a signable object (outgoing request or response). returns a hash of headers to be applied tothe object which comprise its signature.



264
265
266
267
268
# File 'lib/mauth/client.rb', line 264

def signed_headers(object, attributes = {})
  attributes = { time: Time.now.to_i.to_s, app_uuid: client_app_uuid }.merge(attributes)
  signature = self.signature(object, attributes)
  { 'X-MWS-Authentication' => "#{MWS_TOKEN} #{client_app_uuid}:#{signature}", 'X-MWS-Time' => attributes[:time] }
end