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