lib/fog/rackspace/requests/storage/put_object.rb in fog-maestrodev-1.8.0.20130114204828 vs lib/fog/rackspace/requests/storage/put_object.rb in fog-maestrodev-1.14.0.20130806165225

- old
+ new

@@ -8,23 +8,29 @@ # ==== Parameters # * container<~String> - Name for container, should be < 256 bytes and must not contain '/' # * object<~String> - Name for object # * data<~String|File> - data to upload # * options<~Hash> - config headers for object. Defaults to {}. - # - def put_object(container, object, data, options = {}) + # @raise [Fog::Storage::Rackspace::NotFound] - HTTP 404 + # @raise [Fog::Storage::Rackspace::BadRequest] - HTTP 400 + # @raise [Fog::Storage::Rackspace::InternalServerError] - HTTP 500 + # @raise [Fog::Storage::Rackspace::ServiceError] + def put_object(container, object, data, options = {}, &block) data = Fog::Storage.parse_data(data) headers = data[:headers].merge!(options) - request( - :body => data[:body], + + params = block_given? ? { :request_block => block } : { :body => data[:body] } + + params.merge!( :expects => 201, - :idempotent => true, + :idempotent => !params[:request_block], :headers => headers, :method => 'PUT', :path => "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}" ) - end + request(params) + end end end end end