class ScaleEngineAPI::Request

Attributes

path[RW]
query[RW]

Public Class Methods

new(path = "", query = {}) click to toggle source
# File lib/scaleengine/request.rb, line 8
def initialize(path = "", query = {})
  @path = path
  @query = query
end

Public Instance Methods

method_missing(method, *args) click to toggle source
# File lib/scaleengine/request.rb, line 19
def method_missing(method, *args)
  query_new = query
  query_new[:command] += ".#{method}"
  
  params = args[0].is_a?(Hash) ? args[0] : {}
  params.delete(:command)
  params.keys.each do |x|
    query_new[x] = params[x]
  end
  
  Request.new(path, query_new)
end
prepare_request() click to toggle source
# File lib/scaleengine/request.rb, line 32
def prepare_request
  query[:timestamp] = Time.now.to_i
  query[:signature] = Base64.strict_encode64(request_signature)
  body = {:json => JSON.generate(query), :multipart => true}
end
request_signature() click to toggle source
# File lib/scaleengine/request.rb, line 38
def request_signature
  params = query
  json_params = JSON.generate(params)

  # Compute new SHA256 HMAC
  digest = OpenSSL::Digest::SHA256.new
  OpenSSL::HMAC.digest(digest, Configuration.secret_key, json_params)
end
send() click to toggle source
# File lib/scaleengine/request.rb, line 13
def send
  body = prepare_request
  response = RestClient.post path, body
  Response.new(response)
end