1
0
Fork 0
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:
Wesley Beary 2009-08-19 19:10:59 -07:00
parent 319967df7d
commit 644f734a1c
2 changed files with 28 additions and 6 deletions

View file

@ -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

View file

@ -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