Module: Request

Instance Method Summary collapse

Instance Method Details

#_execute(method, url, data = {}, *opts) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/tremendous/request.rb', line 32

def _execute(method, url, data={}, *opts)
  data[:headers] = {
    'authorization' => "Bearer #{@access_token}"
  }.merge(data.class == Hash ? data[:headers] || {} : {})

  HTTParty.send(method, url, data, *opts)
end

#access_tokenObject



8
9
10
# File 'lib/tremendous/request.rb', line 8

def access_token
  @access_token
end

#delete(path, data = {}, *opts) ⇒ Object



28
29
30
# File 'lib/tremendous/request.rb', line 28

def delete(path, data={}, *opts)
  handle_response(_execute(:delete, url(path), data, *opts))
end

#get(path, data = {}, *opts) ⇒ Object



16
17
18
# File 'lib/tremendous/request.rb', line 16

def get(path, data={}, *opts)
  handle_response(_execute(:get, url(path), data, *opts))
end

#handle_response(response) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/tremendous/request.rb', line 44

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

#initialize(access_token, uri) ⇒ Object



3
4
5
6
# File 'lib/tremendous/request.rb', line 3

def initialize(access_token, uri)
  @access_token = access_token
  @uri = uri
end

#post(path, data = {}, *opts) ⇒ Object



20
21
22
# File 'lib/tremendous/request.rb', line 20

def post(path, data={}, *opts)
  handle_response(_execute(:post, url(path), data, *opts))
end

#put(path, data = {}, *opts) ⇒ Object



24
25
26
# File 'lib/tremendous/request.rb', line 24

def put(path, data={}, *opts)
  handle_response(_execute(:put, url(path), data, *opts))
end

#uriObject



12
13
14
# File 'lib/tremendous/request.rb', line 12

def uri
  @uri
end

#url(path, params = {}) ⇒ Object



40
41
42
# File 'lib/tremendous/request.rb', line 40

def url(path, params={})
  URI.join(uri, path)
end