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