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