class BlockchainNode::Request
Constants
- DEFAULT_BASE_URL
Public Class Methods
new(options)
click to toggle source
# File lib/blockchain-node/request.rb, line 9 def initialize(options) @host = options[:host] || DEFAULT_BASE_URL @read_timeout = options[:read_timeout] || 45 @open_timeout = options[:open_timeout] || 3 end
Public Instance Methods
get(path:, auth_token:)
click to toggle source
# File lib/blockchain-node/request.rb, line 15 def get(path:, auth_token:) uri = URI(@host + path) request = Net::HTTP::Get.new(uri) request['Content-Type'] = "application/json" request['Authorization'] = "Bearer #{auth_token}" if auth_token process_request(uri, request) end
post(path:, data: {}, auth_token: nil)
click to toggle source
# File lib/blockchain-node/request.rb, line 25 def post(path:, data: {}, auth_token: nil) uri = URI(@host + path) request = Net::HTTP::Post.new(uri) request['Content-Type'] = "application/json" request['Authorization'] = "Bearer #{auth_token}" if auth_token request.body = data.to_json process_request(uri, request) end
Private Instance Methods
process_request(uri, request)
click to toggle source
# File lib/blockchain-node/request.rb, line 38 def process_request(uri, request) response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https', read_timeout: @read_timeout, open_timeout: @open_timeout ) do |http| http.request(request) end # puts "RAW RESPONSE: #{response.body}" if response.code == "200" begin JSON.parse(response.body) rescue JSON::ParserError { response: response.body } end elsif response.code == "400" raise BlockchainNode::Errors::BadRequest.new(response.body) elsif response.code == "401" raise BlockchainNode::Errors::UnAuthorized.new(response.body) else raise BlockchainNode::Errors::Unknown.new("#{response.code} #{response.body}") end end