class ExmoApi::Request
Attributes
api_method[R]
config[W]
Public Class Methods
new(api_method, params = {})
click to toggle source
# File lib/exmo_api/request.rb, line 12 def initialize(api_method, params = {}) @api_method = api_method @params = params end
Public Instance Methods
perform()
click to toggle source
# File lib/exmo_api/request.rb, line 17 def perform JSON.parse response.body.to_s end
response()
click to toggle source
# File lib/exmo_api/request.rb, line 21 def response @response ||= http.request(build_request) end
Private Instance Methods
build_request()
click to toggle source
# File lib/exmo_api/request.rb, line 33 def build_request request.body = post_data request end
config()
click to toggle source
# File lib/exmo_api/request.rb, line 68 def config @config ||= ExmoApi.configuration end
headers()
click to toggle source
# File lib/exmo_api/request.rb, line 51 def headers return {} if public_method? digest = OpenSSL::Digest.new('sha512') signature = OpenSSL::HMAC.hexdigest(digest, config.api_secret, post_data) { 'Sign' => signature, 'Key' => config.api_key } end
http()
click to toggle source
# File lib/exmo_api/request.rb, line 27 def http @http ||= Net::HTTP.new(uri.host, uri.port) @http.use_ssl = true if uri.scheme == 'https' @http end
params()
click to toggle source
# File lib/exmo_api/request.rb, line 43 def params @params.merge(nonce: Time.now.strftime('%s%6N')) end
post_data()
click to toggle source
# File lib/exmo_api/request.rb, line 39 def post_data @post_data ||= URI.encode_www_form(params) end
public_method?()
click to toggle source
# File lib/exmo_api/request.rb, line 60 def public_method? config.public_api_methods.include?(api_method.to_sym) end
request()
click to toggle source
# File lib/exmo_api/request.rb, line 47 def request @request ||= Net::HTTP::Post.new(uri.path, headers) end
uri()
click to toggle source
# File lib/exmo_api/request.rb, line 64 def uri URI.parse([config.api_endpoint, api_method].join('/')) end