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 = Fog::Response.new
|
||||||
response.request = params
|
response.request = params
|
||||||
response.status = @connection.readline[9..11].to_i
|
response.status = @connection.readline[9..11].to_i
|
||||||
|
if params[:expects] && params[:expects] != response.status
|
||||||
|
error = true
|
||||||
|
end
|
||||||
while true
|
while true
|
||||||
data = @connection.readline.chomp!
|
data = @connection.readline.chomp!
|
||||||
if data == ""
|
if data == ""
|
||||||
|
@ -55,8 +58,13 @@ unless Fog.mocking?
|
||||||
response.headers[capitalize(header[0])] = header[1]
|
response.headers[capitalize(header[0])] = header[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:parser]
|
if error || params[:parser]
|
||||||
body = Nokogiri::XML::SAX::PushParser.new(params[:parser])
|
if error
|
||||||
|
parser = Fog::Errors::Parser.new
|
||||||
|
elsif params[:parser]
|
||||||
|
parser = params[:parser]
|
||||||
|
end
|
||||||
|
body = Nokogiri::XML::SAX::PushParser.new(parser)
|
||||||
else
|
else
|
||||||
body = ''
|
body = ''
|
||||||
end
|
end
|
||||||
|
@ -77,14 +85,14 @@ unless Fog.mocking?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:parser]
|
if parser
|
||||||
body.finish
|
body.finish
|
||||||
response.body = params[:parser].response
|
response.body = parser.response
|
||||||
else
|
else
|
||||||
response.body = body
|
response.body = body
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:expects] && params[:expects] != response.status
|
if error
|
||||||
raise(Fog::Errors.status_error(params[:expects], response.status, response))
|
raise(Fog::Errors.status_error(params[:expects], response.status, response))
|
||||||
else
|
else
|
||||||
response
|
response
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
require "#{File.dirname(__FILE__)}/parser"
|
||||||
|
|
||||||
module Fog
|
module Fog
|
||||||
module Errors
|
module Errors
|
||||||
class Continue < StandardError; end # 100
|
class Continue < StandardError; end # 100
|
||||||
|
@ -124,7 +126,19 @@ module Fog
|
||||||
503 => 'Service Unavailable',
|
503 => 'Service Unavailable',
|
||||||
504 => 'Gateway Timeout'
|
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
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue