From 81f0924c654875a738b646ad951a28f906e0a97c Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Wed, 18 Jul 2012 09:59:21 +0200 Subject: rest call error handling fixed --- lib/error.rb | 4 +++- lib/overwrite.rb | 1 - lib/rest-client-wrapper.rb | 24 +++++++++++++++++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/error.rb b/lib/error.rb index 51451e7..3017c7f 100644 --- a/lib/error.rb +++ b/lib/error.rb @@ -33,7 +33,6 @@ class RuntimeError cut_index -= 1 cut_index = backtrace.size-1 if cut_index < 0 details = backtrace[0..cut_index].join("\n") - details += "REST paramenters:\n#{@request.args.inspect}" if @request writer << [subject, RDF::OT.errorCause, details] end rdf @@ -59,6 +58,7 @@ module OpenTox "LockedError" => 423, "InternalServerError" => 500, "NotImplementedError" => 501, + "RestCallError" => 501, "ServiceUnavailableError" => 503, "TimeOutError" => 504, }.each do |klass,code| @@ -76,6 +76,7 @@ module OpenTox end end +=begin # Errors received from RestClientWrapper calls class RestCallError < Error attr_accessor :request#, :response @@ -85,5 +86,6 @@ module OpenTox super 502, message, uri end end +=end end diff --git a/lib/overwrite.rb b/lib/overwrite.rb index 137fec8..0a55ce2 100644 --- a/lib/overwrite.rb +++ b/lib/overwrite.rb @@ -93,4 +93,3 @@ module Kernel end end - diff --git a/lib/rest-client-wrapper.rb b/lib/rest-client-wrapper.rb index 5707831..e89c90d 100644 --- a/lib/rest-client-wrapper.rb +++ b/lib/rest-client-wrapper.rb @@ -42,8 +42,30 @@ module OpenTox @response = @request.execute do |response, request, result| if [301, 302, 307].include? response.code and request.method == :get response.follow_redirection(request, result) + elsif response.code >= 400 and !URI.task?(uri) + message = response.to_s + message += "\nREST paramenters:\n#{request.args.inspect}" + case response.code + when 400 + bad_request_error message, uri + when 401 + not_authorized_error message, uri + when 404 + not_found_error message, uri + when 433 + locked_error message, uri + when 500 + internal_server_error message, uri + when 501 + not_implemented_error message, uri + when 503 + service_unavailable_error message, uri + when 504 + time_out_error message, uri + else + rest_call_error message, uri + end else - raise OpenTox::RestCallError.new response.to_s, request, uri unless response.code < 400 or URI.task? uri response end end -- cgit v1.2.3