Class: Restforce::Middleware::RaiseError

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/restforce/middleware/raise_error.rb

Instance Method Summary collapse

Instance Method Details

#bodyObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/restforce/middleware/raise_error.rb', line 26

def body
  @body = (@env[:body].is_a?(Array) ? @env[:body].first : @env[:body])

  case @body
  when Hash
    @body
  else
    { 'errorCode' => '(error code missing)', 'message' => @body }
  end
end

#messageObject



22
23
24
# File 'lib/restforce/middleware/raise_error.rb', line 22

def message
  "#{body['errorCode']}: #{body['message']}"
end

#on_complete(env) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/restforce/middleware/raise_error.rb', line 3

def on_complete(env)
  @env = env
  case env[:status]
  when 300
    raise Faraday::Error::ClientError.new("300: The external ID provided matches " \
                                          "more than one record",
                                          response_values)
  when 401
    raise Restforce::UnauthorizedError, message
  when 404
    raise Faraday::Error::ResourceNotFound, message
  when 413
    raise Faraday::Error::ClientError.new("413: Request Entity Too Large",
                                          response_values)
  when 400...600
    raise Faraday::Error::ClientError.new(message, response_values)
  end
end

#response_valuesObject



37
38
39
40
41
42
43
# File 'lib/restforce/middleware/raise_error.rb', line 37

def response_values
  {
    status: @env[:status],
    headers: @env[:response_headers],
    body: @env[:body]
  }
end