class PlateApi::Request

Constants

DefaultApiBaseEndpoint
HttpAdapter

Public Class Methods

new(public_key, secret, method, path, custom_server = nil) click to toggle source
# File lib/plate_api/request.rb, line 14
def initialize(public_key, secret, method, path, custom_server = nil)
  base_api_endpoint = custom_server ? custom_server : DefaultApiBaseEndpoint

  @connection = ::Faraday.new(url: base_api_endpoint) do |faraday|
    extra_builder_options(faraday)
    faraday.adapter HttpAdapter
  end

  @public_key = public_key
  @secret = secret
  @method = method
  @path = strip_path(path)
end

Public Instance Methods

calculate_signature() click to toggle source
# File lib/plate_api/request.rb, line 48
def calculate_signature
  string_to_sign = "#{@method}\n" +
                   "#{@connection.host}\n" +
                   "#{@connection.path_prefix}/#{@path}\n" +
                   "#{url_parameters}\n" +
                   "#{request_date}"
  signature = Base64.strict_encode64(OpenSSL::HMAC.digest("SHA512", @secret, string_to_sign))
  return "hmac #{@public_key}:#{signature}"
end
execute(response_type = :raw) click to toggle source
# File lib/plate_api/request.rb, line 28
def execute(response_type = :raw)
  response = @connection.send(@method.downcase) do |request|
    request.url url_path
    request.headers["Date"] = request_date
    request.headers["Authorization"] = calculate_signature
    extra_request_options(request)
  end

  return case response_type
         when :raw
           return response.body
         when :json
           return JSON.parse(response.body)
         end
end
request_date() click to toggle source
# File lib/plate_api/request.rb, line 44
def request_date
  @date ||= Time.now.httpdate
end

Private Instance Methods

extra_builder_options(request) click to toggle source
# File lib/plate_api/request.rb, line 71
def extra_builder_options(request)
end
extra_request_options(request) click to toggle source
# File lib/plate_api/request.rb, line 68
def extra_request_options(request)
end
strip_path(path) click to toggle source
# File lib/plate_api/request.rb, line 74
def strip_path(path)
  path.gsub(/^\/|\/$/, "")
end
url_parameters() click to toggle source
# File lib/plate_api/request.rb, line 64
def url_parameters
  ""
end
url_path() click to toggle source
# File lib/plate_api/request.rb, line 60
def url_path
  @path
end