Method: FakeS3::FileStore#get_object

Defined in:
lib/fakes3/file_store.rb

#get_object(bucket, object_name, request) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/fakes3/file_store.rb', line 81

def get_object(bucket, object_name, request)
  begin
    real_obj = S3Object.new
    obj_root = File.join(@root,bucket,object_name,FAKE_S3_METADATA_DIR)
     = File.open(File.join(obj_root, "metadata")) { |file| YAML::load(file) }
    real_obj.name = object_name
    real_obj.md5 = [:md5]
    real_obj.content_type = request.query['response-content-type'] ||
      .fetch(:content_type) { "application/octet-stream" }
    real_obj.content_disposition = request.query['response-content-disposition'] ||
      [:content_disposition]
    real_obj.content_encoding = .fetch(:content_encoding) # if metadata.fetch(:content_encoding)
    real_obj.io = RateLimitableFile.open(File.join(obj_root, "content"), 'rb')
    real_obj.size = .fetch(:size) { 0 }
    real_obj.creation_date = File.ctime(obj_root).utc.iso8601(SUBSECOND_PRECISION)
    real_obj.modified_date = .fetch(:modified_date) do
      File.mtime(File.join(obj_root, "content")).utc.iso8601(SUBSECOND_PRECISION)
    end
    real_obj. = .fetch(:custom_metadata) { {} }
    return real_obj
  rescue
    unless @quiet_mode
      puts $!
      $!.backtrace.each { |line| puts line }
    end
    return nil
  end
end