module RestAPIBuilder::Request::ResponseHandler

Public Instance Methods

handle_json_response(**options, &block) click to toggle source
# 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) click to toggle source
# 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_error() { || ... } click to toggle source
# 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:) click to toggle source
# 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) click to toggle source
# 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:) click to toggle source
# 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