Propagate API errors as exceptions
[arvados.git] / sdk / ruby / lib / arvados.rb
index a6bb37ceda59ab462349d29bf692b6cac109c973..ba47aea775d335a1a4af294966ec03d0184cced3 100644 (file)
@@ -20,6 +20,9 @@ end
 
 class Arvados
 
+  class TransactionFailedError < StandardError
+  end
+
   @@debuglevel = 0
   class << self
     attr_accessor :debuglevel
@@ -151,7 +154,11 @@ class Arvados
         execute(:api_method => arvados_api.send(api_models_sym).send(method),
                 :authenticated => false,
                 :parameters => parameters)
-      JSON.parse result.body, :symbolize_names => true
+      resp = JSON.parse result.body, :symbolize_names => true
+      if resp[:errors]
+        raise Arvados::TransactionFailedError.new(resp[:errors])
+      end
+      resp
     end
 
     def []=(x,y)