Module: Tamara::Request
- Included in:
- ApplicationService
- Defined in:
- lib/tamara/api/request.rb
Instance Method Summary collapse
- #api_token ⇒ Object
- #error_message ⇒ Object
-
#handle_response_error ⇒ Object
rubocop:disable Metrics/AbcSize.
- #headers ⇒ Object
- #parsed_response ⇒ Object
- #response_body ⇒ Object
- #response_status ⇒ Object
Instance Method Details
#api_token ⇒ Object
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_message ⇒ Object
22 23 24 |
# File 'lib/tamara/api/request.rb', line 22 def @error_message = parsed_response[:message] end |
#handle_response_error ⇒ Object
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(, 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(, http_status: response_status, http_body: response_body) end end |
#headers ⇒ Object
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_response ⇒ Object
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_body ⇒ Object
30 31 32 |
# File 'lib/tamara/api/request.rb', line 30 def response_body @response_body = @response.body end |
#response_status ⇒ Object
26 27 28 |
# File 'lib/tamara/api/request.rb', line 26 def response_status @response_status = @response.status end |