4924: Rename HTTPResponse to ArvadosAPIError. Use NET::HTTP Response titles
authorPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 12 Jan 2015 15:33:36 +0000 (10:33 -0500)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 12 Jan 2015 15:33:36 +0000 (10:33 -0500)
for error codes if no other error is available.

sdk/cli/bin/arv

index 0ecfb6514773189849428b0900be980b9c216a7e..f27711f41abf825c1b008246798732ab8c5b3ddf 100755 (executable)
@@ -222,8 +222,8 @@ def edit_and_commit_object initial_obj, tmp_stem, global_opts, &block
           this_error = "YAML error parsing your input: #{e}"
         elsif e.is_a? JSON::ParserError
           this_error = "JSON error parsing your input: #{e}"
-        elsif e.is_a? HttpResponse
-          this_error = "API responded with error #{e.status}"
+        elsif e.is_a? ArvadosAPIError
+          this_error = "API responded with error #{e}"
         else
           this_error = "#{e.class}: #{e}"
           can_retry = false
@@ -256,11 +256,7 @@ def edit_and_commit_object initial_obj, tmp_stem, global_opts, &block
   nil
 end
 
-class HttpResponse < RuntimeError
-  attr_reader :status
-  def initialize status
-    @status = status
-  end
+class ArvadosAPIError < RuntimeError
 end
 
 def check_response result
@@ -271,7 +267,10 @@ def check_response result
   end
 
   if result.response.status != 200
-    raise HttpResponse.new "#{result.response.status}: " + (results['errors'] && results['errors'].join('\n') || "")
+    require 'net/http'
+    raise ArvadosAPIError.new("#{result.response.status}: #{
+                              ((results['errors'] && results['errors'].join('\n')) ||
+                                Net::HTTPResponse::CODE_TO_OBJ[status.to_s].to_s.sub(/^Net::HTTP/, '')).titleize}")
   end
 
   results