class Requestor

Public Class Methods

new(api_key:, host: nil, version: nil, auth: nil) click to toggle source
# File lib/requestor.rb, line 7
def initialize(api_key:, host: nil, version: nil, auth: nil)
  @api_key = api_key
  @host = host || 'https://mobius.network/api'
  @version = version || 'v1'
  @auth = auth
end

Public Instance Methods

get(resource, action, payload) click to toggle source
# File lib/requestor.rb, line 14
def get(resource, action, payload)
  request('GET', resource, action, payload)
end
post(resource, action, payload) click to toggle source
# File lib/requestor.rb, line 18
def post(resource, action, payload)
  request('POST', resource, action, payload)
end
post_json(resource, action, payload) click to toggle source
# File lib/requestor.rb, line 22
def post_json(resource, action, payload)
  request('POST_JSON', resource, action, payload)
end

Private Instance Methods

request(method, resource, action, payload) click to toggle source
# File lib/requestor.rb, line 28
def request(method, resource, action, payload)
  url = "#{@host}/#{@version}/#{resource}/#{action}"

  headers = { 'x-api-key': @api_key }

  if @auth
    headers['Authorization'] = @auth
  end

  http = HTTP.headers(headers)

  response =
    case method
    when 'GET'
      http.get(url, params: payload)
    when 'POST'
      http.post(url, form: payload)
    when 'POST_JSON'
      http.post(url, json: payload)
    end

  if response.code >= 400
    message = ''

    begin
      error = response.parse
      message = error['error']['message']
    rescue StandardError
      message = 'Something wrong'
    end

    raise ApiError.new, message
  end

  response.parse
end