class FakeAWS::S3::Operations::PutObject

Public Class Methods

new(root_directory, request) click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 7
def initialize(root_directory, request)
  @root_directory = root_directory
  @request        = request
end

Public Instance Methods

call() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 12
def call
  return no_such_bucket_response unless bucket_on_disk.exists?

  object_on_disk.write(@request.body.read, metadata)
  success_response
end

Private Instance Methods

bucket_on_disk() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 45
def bucket_on_disk
  @bucket_on_disk ||= BucketOnDisk.new(@root_directory, @request.bucket)
end
content_type_metadata() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 33
def content_type_metadata
  { "Content-Type" => @request.content_type }
end
metadata() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 29
def metadata
  @metadata ||= [content_type_metadata, user_metadata].inject(:merge)
end
no_such_bucket_response() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 25
def no_such_bucket_response
  Responses::Error.new("NoSuchBucket", "BucketName" => @request.bucket)
end
object_on_disk() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 41
def object_on_disk
  @object_on_disk ||= ObjectOnDisk.new(bucket_on_disk, @request.key)
end
success_response() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 21
def success_response
  Responses::Empty.new
end
user_metadata() click to toggle source
# File lib/fake_aws/s3/operations/put_object.rb, line 37
def user_metadata
  @request.http_headers.select {|key, _| key.start_with?("x-amz-meta-") }
end