mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
better error messages
This commit is contained in:
parent
319967df7d
commit
644f734a1c
2 changed files with 28 additions and 6 deletions
|
@ -46,6 +46,9 @@ unless Fog.mocking?
|
|||
response = Fog::Response.new
|
||||
response.request = params
|
||||
response.status = @connection.readline[9..11].to_i
|
||||
if params[:expects] && params[:expects] != response.status
|
||||
error = true
|
||||
end
|
||||
while true
|
||||
data = @connection.readline.chomp!
|
||||
if data == ""
|
||||
|
@ -55,8 +58,13 @@ unless Fog.mocking?
|
|||
response.headers[capitalize(header[0])] = header[1]
|
||||
end
|
||||
|
||||
if params[:parser]
|
||||
body = Nokogiri::XML::SAX::PushParser.new(params[:parser])
|
||||
if error || params[:parser]
|
||||
if error
|
||||
parser = Fog::Errors::Parser.new
|
||||
elsif params[:parser]
|
||||
parser = params[:parser]
|
||||
end
|
||||
body = Nokogiri::XML::SAX::PushParser.new(parser)
|
||||
else
|
||||
body = ''
|
||||
end
|
||||
|
@ -77,14 +85,14 @@ unless Fog.mocking?
|
|||
end
|
||||
end
|
||||
|
||||
if params[:parser]
|
||||
if parser
|
||||
body.finish
|
||||
response.body = params[:parser].response
|
||||
response.body = parser.response
|
||||
else
|
||||
response.body = body
|
||||
end
|
||||
|
||||
if params[:expects] && params[:expects] != response.status
|
||||
if error
|
||||
raise(Fog::Errors.status_error(params[:expects], response.status, response))
|
||||
else
|
||||
response
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
require "#{File.dirname(__FILE__)}/parser"
|
||||
|
||||
module Fog
|
||||
module Errors
|
||||
class Continue < StandardError; end # 100
|
||||
|
@ -124,7 +126,19 @@ module Fog
|
|||
503 => 'Service Unavailable',
|
||||
504 => 'Gateway Timeout'
|
||||
}
|
||||
@errors[actual].new("Expected(#{expected} #{@messages[expected]}) <=> Actual(#{actual} #{@messages[actual]}) #{response.inspect}")
|
||||
response = "#{response.body['Code']} => #{response.body['Message']}"
|
||||
@errors[actual].new("Expected(#{expected} #{@messages[expected]}) <=> Actual(#{actual} #{@messages[actual]}): #{response}")
|
||||
end
|
||||
|
||||
class Parser < Fog::Parsers::Base
|
||||
|
||||
def end_element(name)
|
||||
case name
|
||||
when 'Code', 'Message'
|
||||
@response[name] = @value
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue