Module: Lockme::SignedRequest

Defined in:
lib/lockme/request.rb

Overview

API request module providing argument processing and signing

Class Method Summary collapse

Class Method Details

.perform(method, path, data = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# 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) ⇒ Object



30
31
32
33
34
35
36
37
# 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) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# 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