Module: Tamara::Request

Included in:
ApplicationService
Defined in:
lib/tamara/api/request.rb

Instance Method Summary collapse

Instance Method Details

#api_tokenObject



10
11
12
# File 'lib/tamara/api/request.rb', line 10

def api_token
  @opts[:api_token] || Tamara.api_token || Tamara.configuration.api_token
end

#error_messageObject



22
23
24
# File 'lib/tamara/api/request.rb', line 22

def error_message
  @error_message = parsed_response[:message]
end

#handle_response_errorObject

rubocop:disable Metrics/AbcSize



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/tamara/api/request.rb', line 35

def handle_response_error
  case response_status
  when 400
    raise InvalidRequestError.new(error_message, parsed_response.dig(:errors, 0, :error_code), http_status: response_status, http_body: response_body)
  when 401
    raise AuthenticationError.new("Invalid API key", http_status: response_status, http_body: response_body)
  when 404
    raise APIError.new("Resource not found", http_status: response_status, http_body: response_body)
  when (400..599)
    raise APIError.new(error_message, http_status: response_status, http_body: response_body)
  end
end

#headersObject



3
4
5
6
7
8
# File 'lib/tamara/api/request.rb', line 3

def headers
  @headers = {
    "Content-Type": "application/json",
    Authorization: "Bearer #{api_token}"
  }
end

#parsed_responseObject



14
15
16
17
18
19
20
# File 'lib/tamara/api/request.rb', line 14

def parsed_response
  @parsed_response ||= begin
    JSON.parse(@response.body)
  rescue StandardError
    {}
  end
end

#response_bodyObject



30
31
32
# File 'lib/tamara/api/request.rb', line 30

def response_body
  @response_body = @response.body
end

#response_statusObject



26
27
28
# File 'lib/tamara/api/request.rb', line 26

def response_status
  @response_status = @response.status
end