module Tremendous::Request

Attributes

access_token[R]
uri[R]

Public Class Methods

new(access_token, uri) click to toggle source
# File lib/tremendous/request.rb, line 4
def initialize(access_token, uri)
  @access_token = access_token
  @uri = uri
end

Public Instance Methods

_execute(method, url, data={}, *opts) click to toggle source
# File lib/tremendous/request.rb, line 27
def _execute(method, url, data={}, *opts)
  data[:format] = :json
  data[:headers] = {
    'authorization' => "Bearer #{@access_token}"
  }.merge(data.class == Hash ? data[:headers] || {} : {})

  HTTParty.send(method, url, data, *opts)
end
delete(path, data={}, *opts) click to toggle source
# File lib/tremendous/request.rb, line 23
def delete(path, data={}, *opts)
  handle_response(_execute(:delete, url(path), data, *opts))
end
get(path, data={}, *opts) click to toggle source
# File lib/tremendous/request.rb, line 11
def get(path, data={}, *opts)
  handle_response(_execute(:get, url(path), data, *opts))
end
handle_response(response) click to toggle source
# File lib/tremendous/request.rb, line 40
def handle_response(response)
  if response.success?
    response_json = JSON.parse(response.body).with_indifferent_access
  else
    case response.code
    when 400
      raise Tremendous::BadDataError.new(response)
    when 401
      raise Tremendous::AccessError.new(response)
    when 402
      raise Tremendous::PaymentError.new(response)
    else
      raise Tremendous::Error.new(response)
    end
  end
end
post(path, data={}, *opts) click to toggle source
# File lib/tremendous/request.rb, line 15
def post(path, data={}, *opts)
  handle_response(_execute(:post, url(path), data, *opts))
end
put(path, data={}, *opts) click to toggle source
# File lib/tremendous/request.rb, line 19
def put(path, data={}, *opts)
  handle_response(_execute(:put, url(path), data, *opts))
end
url(path, params={}) click to toggle source
# File lib/tremendous/request.rb, line 36
def url(path, params={})
  URI.join(uri, path)
end