Class: Attachie::FakeDriver
- Inherits:
-
Object
- Object
- Attachie::FakeDriver
- Includes:
- MonitorMixin
- Defined in:
- lib/attachie/fake_driver.rb
Instance Method Summary collapse
- #delete(name, bucket) ⇒ Object
- #download(name, bucket, path) ⇒ Object
- #exists?(name, bucket) ⇒ Boolean
- #flush ⇒ Object
- #info(name, bucket) ⇒ Object
- #list(bucket, prefix: nil) ⇒ Object
- #presigned_post(name, bucket, options = {}) ⇒ Object
- #store(name, data_or_io, bucket, options = {}) ⇒ Object
- #store_multipart(name, bucket, options = {}, &block) ⇒ Object
- #temp_url(name, bucket, options = {}) ⇒ Object
- #value(name, bucket) ⇒ Object
Instance Method Details
#delete(name, bucket) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/attachie/fake_driver.rb', line 81 def delete(name, bucket) synchronize do objects(bucket).delete(name) end true end |
#download(name, bucket, path) ⇒ Object
97 98 99 100 101 |
# File 'lib/attachie/fake_driver.rb', line 97 def download(name, bucket, path) content = value(name, bucket) open(path, "wb") { |stream| stream.write(content) } end |
#exists?(name, bucket) ⇒ Boolean
75 76 77 78 79 |
# File 'lib/attachie/fake_driver.rb', line 75 def exists?(name, bucket) synchronize do objects(bucket).key?(name) end end |
#flush ⇒ Object
107 108 109 110 111 |
# File 'lib/attachie/fake_driver.rb', line 107 def flush synchronize do @objects = {} end end |
#info(name, bucket) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/attachie/fake_driver.rb', line 47 def info(name, bucket) synchronize do raise(ItemNotFound, "Object #{ name } does not exist in bucket #{ bucket }") unless objects(bucket).key?(name) { last_modified: objects(bucket)[name][:last_modified], content_length: objects(bucket)[name][:data].size, content_type: MIME::Types.of(name).first&.to_s } end end |
#list(bucket, prefix: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/attachie/fake_driver.rb', line 37 def list(bucket, prefix: nil) return enum_for(:list, bucket, prefix: prefix) unless block_given? synchronize do objects(bucket).sort { |a, b| a[0] <=> b[0] }.each do |key, _| yield key if prefix.nil? || key.start_with?(prefix) end end end |
#presigned_post(name, bucket, options = {}) ⇒ Object
59 60 61 |
# File 'lib/attachie/fake_driver.rb', line 59 def presigned_post(name, bucket, = {}) raise NotSupported, 'presigned_post is not supported in FakeDriver' end |
#store(name, data_or_io, bucket, options = {}) ⇒ Object
63 64 65 66 67 |
# File 'lib/attachie/fake_driver.rb', line 63 def store(name, data_or_io, bucket, = {}) synchronize do objects(bucket)[name] = { data: data_or_io.respond_to?(:read) ? data_or_io.read : data_or_io, last_modified: Time.now.utc } end end |
#store_multipart(name, bucket, options = {}, &block) ⇒ Object
69 70 71 72 73 |
# File 'lib/attachie/fake_driver.rb', line 69 def store_multipart(name, bucket, = {}, &block) synchronize do objects(bucket)[name] = { data: FakeMultipartUpload.new(name, bucket, , &block).data, last_modified: Time.now.utc } end end |
#temp_url(name, bucket, options = {}) ⇒ Object
103 104 105 |
# File 'lib/attachie/fake_driver.rb', line 103 def temp_url(name, bucket, = {}) "https://example.com/#{bucket}/#{name}?signature=signature&expires=expires" end |
#value(name, bucket) ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/attachie/fake_driver.rb', line 89 def value(name, bucket) synchronize do raise(ItemNotFound, "Object #{ name } does not exist in bucket #{ bucket }") unless objects(bucket).key?(name) objects(bucket)[name][:data] end end |