module Bitsor::Connection
Public Instance Methods
delete(url, options = {})
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 29 def delete(url, options = {}) request :delete, url, parse_body(options) end
get(url, options = {})
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 13 def get(url, options = {}) request :get, url, nil, parse_query(options) end
last_response()
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 33 def last_response @last_response if defined? @last_response end
patch(url, options = {})
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 25 def patch(url, options = {}) request :patch, url, parse_body(options) end
post(url, options = {})
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 17 def post(url, options = {}) request :post, url, parse_body(options) end
put(url, options = {})
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 21 def put(url, options = {}) request :put, url, parse_body(options) end
Protected Instance Methods
endpoint()
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 39 def endpoint Bitsor::Default.api_endpoint end
Private Instance Methods
complete_request(response)
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 65 def complete_request(response) if error = Bitsor::Error.from_response(response) raise error end JSON.parse(response.body, symbolize_names: true)[:payload] end
parse_body(options)
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 80 def parse_body(options) return '' if options.nil? || options.empty? options = (options || {}).delete_if { |_k, v| v.nil? } options.to_json end
parse_query(options)
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 73 def parse_query(options) return nil if options.empty? || !options options = options.select { |_key, value| !value.nil? || (value && !value.empty?) } "?#{URI.encode_www_form(options)}" end
request(method, path, body = nil, params = nil)
click to toggle source
# File lib/bitsor/concerns/connection.rb, line 45 def request(method, path, body = nil, params = nil) nonce = DateTime.now.strftime('%Q') message = nonce + method.to_s.upcase + path + params.to_s + body.to_s signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), api_secret, message) url = "#{endpoint}#{path}#{params}" request_options = { method: method, headers: { Authorization: "Bitso #{api_key}:#{nonce}:#{signature}", 'Content-Type': 'application/json', }, } request_options[:body] = body response = Typhoeus::Request.new(url, request_options).run @last_response = response complete_request(response) end