class Blockchain::Client
Attributes
api_code[R]
base_url[R]
Public Class Methods
new(base_url = nil, api_code = nil)
click to toggle source
# File lib/blockchain/client.rb, line 13 def initialize(base_url = nil, api_code = nil) @base_url = base_url.nil? ? DEFAULT_BASE_URL : base_url @api_code = api_code end
Public Instance Methods
call_api(resource, method: 'get', data: nil)
click to toggle source
# File lib/blockchain/client.rb, line 21 def call_api(resource, method: 'get', data: nil) url = URI.parse(@base_url + resource) http = Net::HTTP.new(url.host, url.port) http.use_ssl = @base_url.start_with? 'https://' http.read_timeout = TIMEOUT_SECONDS request = nil if method == 'get' if url.request_uri != '/v2/receive' url.query = data.nil? ? nil : URI.encode_www_form(data) elsif url.query = "" data.each { |k,v| url.query << "#{k}=#{v}&" } end request = Net::HTTP::Get.new(url.request_uri) elsif method == 'post' request = Net::HTTP::Post.new(url.request_uri) request.content_type = 'application/x-www-form-urlencoded' if data != nil then if !@api_code.nil? then data['api_code'] = @api_code end request.set_form_data(data) else if !@api_code.nil? then data = { 'api_code' => @api_code } request.set_form_data(data) else {} end end end response = http.request(request) if response.code != '200' raise APIException, response.body end return response.body end