Module: Tremendous::Request

Instance Method Summary collapse

Instance Method Details

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



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

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_token ⇒ Object



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

def access_token
  @access_token
end

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



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

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

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



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

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

#handle_response(response) ⇒ Object



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

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



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

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

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



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

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

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



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

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

#uri ⇒ Object



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

def uri
  @uri
end

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



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

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