lib/unimatrix/authorization/operation.rb in unimatrix-3.3.1 vs lib/unimatrix/authorization/operation.rb in unimatrix-3.3.2

- old
+ new

@@ -3,11 +3,13 @@ def destroy result = nil Request.new.tap do | request | response = request.destroy( @path, @parameters ) - if response.present? + if response_is_error?( response ) + result = response + elsif response.present? result = response.resources end end result end @@ -15,16 +17,20 @@ def read( &block ) result = nil response = nil Request.new.tap do | request | request.get( @path, @parameters ).tap do | response | - result = response.resources - if block_given? - case block.arity - when 0; yield - when 1; yield result - when 2; yield result, response + if response_is_error?( response ) + result = response + else + result = response.resources + if block_given? + case block.arity + when 0; yield + when 1; yield result + when 2; yield result, response + end end end end end result @@ -33,11 +39,13 @@ def write( node, objects, &block ) result = nil Request.new.tap do | request | serializer = Unimatrix::Serializer.new( objects ) response = request.post( @path, @parameters, serializer.serialize( node ) ) - if response.present? + if response_is_error?( response ) + result = response + else result = response.resources if block_given? case block.arity when 0; yield when 1; yield result @@ -52,9 +60,13 @@ protected; def spawn( parameters ) Operation.new( @path, @parameters.deep_merge( parameters || {} ) ) + end + + protected; def response_is_error?( response ) + response.is_a?( Error ) || response.is_a?( Unimatrix::Error ) end end end \ No newline at end of file