module Lockme::SignedRequest

API request module providing argument processing and signing

Public Class Methods

perform(method, path, data = nil) click to toggle source
# File lib/lockme/request.rb, line 6
def self.perform(method, path, data = nil)
  params = prepare_params(method, path, data)

  resp = Request.send(method.downcase, path, params).parsed_response
  if resp.is_a?(Hash) && resp.has_key?('error')
    raise Lockme::Error, resp['error']
  end
  resp
rescue JSON::ParserError
  raise Lockme::Error, 'Invalid response from the server'
end
prepare_params(method, path, data) click to toggle source
# File lib/lockme/request.rb, line 30
def self.prepare_params(method, path, data)
  headers = signature(method.upcase, path.gsub(%r{^\/}, ''), data)
  {
    body: data,
    headers: headers,
    debug_output: Lockme.logger
  }.delete_if { |key, val| key.nil? || val.nil? }
end
signature(*args) click to toggle source
# File lib/lockme/request.rb, line 18
def self.signature(*args)
  digest = Digest::SHA1.hexdigest([
    *args,
    Lockme.api_secret
  ].compact.join(''))

  {
    'Partner-Key' => Lockme.api_key,
    'Signature'   => digest
  }
end