class Metropol::Request

Public Class Methods

new(public_key:, private_key:, path:, port:, api_version:, payload: {}) click to toggle source
# File lib/metropol/request.rb, line 17
def initialize(public_key:, private_key:, path:, port:, api_version:, payload: {})
  @public_key = public_key
  @private_key = private_key
  @path = path
  @port = port
  @api_version = api_version
  @payload = payload
end

Public Instance Methods

generate_api_hash(timestamp) click to toggle source
# File lib/metropol/request.rb, line 50
def generate_api_hash(timestamp)
  json = JSON.generate(@payload)
  str = @private_key + json + @public_key + timestamp
  Digest::SHA256.hexdigest(str.encode('UTF-8'))
end
generate_headers() click to toggle source
# File lib/metropol/request.rb, line 34
def generate_headers
  timestamp = generate_timestamp
  api_hash = generate_api_hash(timestamp)

  headers = default_headers
  headers['X-METROPOL-REST-API-KEY'] = @public_key
  headers['X-METROPOL-REST-API-TIMESTAMP'] = timestamp
  headers['X-METROPOL-REST-API-HASH'] = api_hash
  headers
end
generate_timestamp() click to toggle source
# File lib/metropol/request.rb, line 45
def generate_timestamp
  t = Time.now.utc
  t.strftime('%Y%m%d%H%M%S%6N')
end
generate_url() click to toggle source
# File lib/metropol/request.rb, line 26
def generate_url
  URI::HTTPS.build(
    host: HOST,
    port: port,
    path: "/#{api_version}/#{@path}"
  ).to_s
end
post() click to toggle source
# File lib/metropol/request.rb, line 56
def post
  url = generate_url
  headers = generate_headers
  resp = RestClient.post(url, payload_json, headers)
  JSON.parse resp.body
end

Private Instance Methods

api_version() click to toggle source
# File lib/metropol/request.rb, line 69
def api_version
  @api_version || API_VERSION
end
payload_json() click to toggle source
# File lib/metropol/request.rb, line 73
def payload_json
  @payload.to_json
end
port() click to toggle source
# File lib/metropol/request.rb, line 65
def port
  @port || PORT
end