class Fireblocks::Request

Interface to GET, POST, PUT

Constants

Error

Attributes

path[RW]
uri[RW]

Public Class Methods

get(path:, body: '') click to toggle source
# File lib/fireblocks/api/request.rb, line 10
def get(path:, body: '')
  new(path: path).get(body)
end
new(path:) click to toggle source
# File lib/fireblocks/api/request.rb, line 25
def initialize(path:)
  @path = path
  @uri = URI("#{Fireblocks.configuration.base_url}#{path}")
end
post(path:, body:) click to toggle source
# File lib/fireblocks/api/request.rb, line 18
def post(path:, body:)
  new(path: path).post(body)
end
put(path:, body:) click to toggle source
# File lib/fireblocks/api/request.rb, line 14
def put(path:, body:)
  new(path: path).put(body)
end

Public Instance Methods

get(body) click to toggle source
# File lib/fireblocks/api/request.rb, line 30
def get(body)
  req = Net::HTTP::Get.new(uri)
  request_headers(body).each { |rk, rv| req[rk] = rv }

  valid_response!(send_request(req))
end
post(body) click to toggle source
# File lib/fireblocks/api/request.rb, line 45
def post(body)
  req = Net::HTTP::Post.new(uri)
  request_headers(body).each { |rk, rv| req[rk] = rv }
  req.body = body.to_json

  valid_response!(send_request(req))
end
put(body) click to toggle source
# File lib/fireblocks/api/request.rb, line 37
def put(body)
  req = Net::HTTP::Put.new(uri)
  request_headers(body).each { |rk, rv| req[rk] = rv }
  req.body = body.to_json

  valid_response!(send_request(req))
end

Private Instance Methods

request_headers(body) click to toggle source
# File lib/fireblocks/api/request.rb, line 55
def request_headers(body)
  {
    'X-API-Key' => Fireblocks.configuration.api_key,
    'Authorization' => "Bearer #{token(body)}",
    'Content-Type' => 'application/json'
  }
end
send_request(request) click to toggle source
# File lib/fireblocks/api/request.rb, line 63
def send_request(request)
  Net::HTTP.start(
    uri.hostname, uri.port, use_ssl: true
  ) { |http| http.request(request) }
end
token(body) click to toggle source
# File lib/fireblocks/api/request.rb, line 69
def token(body)
  Token.call(body, uri)
end
valid_response!(req_response) click to toggle source
# File lib/fireblocks/api/request.rb, line 73
def valid_response!(req_response)
  resp = JSON.parse(req_response.body)
  return resp if req_response.message == 'OK'

  raise Error, resp
end