Module: RestAPIBuilder::Request::ResponseHandler

Defined in:
lib/rest_api_builder/request/response_handler.rb

Class Method Summary collapse

Class Method Details

.handle_json_response(**options, &block) ⇒ Object



8
9
10
11
# File 'lib/rest_api_builder/request/response_handler.rb', line 8

def handle_json_response(**options, &block)
  result = handle_response(**options, &block)
  result.merge(body: parse_json(result[:body]))
end

.handle_response(logger: nil, &block) ⇒ Object



13
14
15
16
17
# File 'lib/rest_api_builder/request/response_handler.rb', line 13

def handle_response(logger: nil, &block)
  result = parse_response(**handle_response_error(&block))
  maybe_log_result(result, logger: logger)
  result
end

.handle_response_errorObject



19
20
21
22
23
24
25
26
# File 'lib/rest_api_builder/request/response_handler.rb', line 19

def handle_response_error
  response = yield
  { raw_response: response, success: true }
rescue RestClient::RequestFailed => e
  raise e unless e.response

  { raw_response: e.response, success: false }
end

.maybe_log_result(result, logger:) ⇒ Object



37
38
39
# File 'lib/rest_api_builder/request/response_handler.rb', line 37

def maybe_log_result(result, logger:)
  logger && logger << "# => Response: #{result}\n"
end

.parse_json(json) ⇒ Object



41
42
43
44
45
# File 'lib/rest_api_builder/request/response_handler.rb', line 41

def parse_json(json)
  JSON.parse(json)
rescue JSON::ParserError
  json
end

.parse_response(raw_response:, success:) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/rest_api_builder/request/response_handler.rb', line 28

def parse_response(raw_response:, success:)
  {
    success: success,
    status: raw_response.code,
    body: raw_response.body,
    headers: raw_response.headers
  }
end