class Gitlab::Error::ResponseError

Custom error class for rescuing from HTTP response errors.

Public Class Methods

new(response) click to toggle source
Calls superclass method
# File lib/gitlab/error.rb, line 14
def initialize(response)
  @response = response
  super(build_error_message)
end

Public Instance Methods

response_status() click to toggle source

Status code returned in the http response.

@return [Integer]

# File lib/gitlab/error.rb, line 22
def response_status
  @response.code
end

Private Instance Methods

build_error_message() click to toggle source

Human friendly message.

@return [String]

# File lib/gitlab/error.rb, line 31
def build_error_message
  parsed_response = @response.parsed_response
  message = parsed_response.message || parsed_response.error

  "Server responded with code #{@response.code}, message: " \
  "#{handle_message(message)}. " \
  "Request URI: #{@response.request.base_uri}#{@response.request.path}"
end
handle_message(message) click to toggle source

Handle error response message in case of nested hashes

# File lib/gitlab/error.rb, line 41
def handle_message(message)
  case message
  when Gitlab::ObjectifiedHash
    message.to_h.sort.map do |key, val|
      "'#{key}' #{(val.is_a?(Hash) ? val.sort.map { |k, v| "(#{k}: #{v.join(' ')})" } : val).join(' ')}"
    end.join(', ')
  when Array
    message.join(' ')
  else
    message
  end
end