attachie 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/attachie/fake_driver.rb +36 -16
- data/lib/attachie/version.rb +1 -1
- data/spec/attachie/fake_driver_spec.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e46dfdb8f2b5d9b94594ca38b5d72b3164a7659ce165f6e5f328ee72275ee5a
|
4
|
+
data.tar.gz: d88df51754ce79dc3f716b0e5ccbd7fc4853bde2b92dbf75a85bc65dbb5b83ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f92ec31c86801736cdc8cd6c2cd7265ed6054d48e796d3961c00490b1e8a79cdfaeefddc4746c2d3d714e0659f95ab0e1873331b3d6835acf0eaf47ed9dca4f
|
7
|
+
data.tar.gz: 2495f460854161a8e241c67babb8bd7eb72bf63bbaabd04b867a195e106207e6fbd5701c687acf8909bac241adecc25e32e571660d904ccebc32b3edd287d327
|
data/CHANGELOG.md
CHANGED
data/lib/attachie/fake_driver.rb
CHANGED
@@ -32,22 +32,28 @@ module Attachie
|
|
32
32
|
end
|
33
33
|
|
34
34
|
class FakeDriver
|
35
|
+
include MonitorMixin
|
36
|
+
|
35
37
|
class ItemNotFound < StandardError; end
|
36
38
|
|
37
39
|
def list(bucket, prefix: nil)
|
38
40
|
return enum_for(:list, bucket, prefix: prefix) unless block_given?
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
+
synchronize do
|
43
|
+
objects(bucket).sort { |a, b| a[0] <=> b[0] }.each do |key, _|
|
44
|
+
yield key if prefix.nil? || key.start_with?(prefix)
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
45
49
|
def info(name, bucket)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
50
|
+
synchronize do
|
51
|
+
{
|
52
|
+
last_modified: nil,
|
53
|
+
content_length: objects(bucket)[name].size,
|
54
|
+
content_type: MIME::Types.of(name).first&.to_s
|
55
|
+
}
|
56
|
+
end
|
51
57
|
end
|
52
58
|
|
53
59
|
def presigned_post(name, bucket, options = {})
|
@@ -55,25 +61,35 @@ module Attachie
|
|
55
61
|
end
|
56
62
|
|
57
63
|
def store(name, data_or_io, bucket, options = {})
|
58
|
-
|
64
|
+
synchronize do
|
65
|
+
objects(bucket)[name] = data_or_io.respond_to?(:read) ? data_or_io.read : data_or_io
|
66
|
+
end
|
59
67
|
end
|
60
68
|
|
61
69
|
def store_multipart(name, bucket, options = {}, &block)
|
62
|
-
|
70
|
+
synchronize do
|
71
|
+
objects(bucket)[name] = FakeMultipartUpload.new(name, bucket, options, &block).data
|
72
|
+
end
|
63
73
|
end
|
64
74
|
|
65
75
|
def exists?(name, bucket)
|
66
|
-
|
76
|
+
synchronize do
|
77
|
+
objects(bucket).key?(name)
|
78
|
+
end
|
67
79
|
end
|
68
80
|
|
69
81
|
def delete(name, bucket)
|
70
|
-
|
82
|
+
synchronize do
|
83
|
+
objects(bucket).delete(name)
|
84
|
+
end
|
71
85
|
end
|
72
86
|
|
73
87
|
def value(name, bucket)
|
74
|
-
|
88
|
+
synchronize do
|
89
|
+
raise(ItemNotFound) unless objects(bucket).key?(name)
|
75
90
|
|
76
|
-
|
91
|
+
objects(bucket)[name]
|
92
|
+
end
|
77
93
|
end
|
78
94
|
|
79
95
|
def download(name, bucket, path)
|
@@ -87,14 +103,18 @@ module Attachie
|
|
87
103
|
end
|
88
104
|
|
89
105
|
def flush
|
90
|
-
|
106
|
+
synchronize do
|
107
|
+
@objects = {}
|
108
|
+
end
|
91
109
|
end
|
92
110
|
|
93
111
|
private
|
94
112
|
|
95
113
|
def objects(bucket)
|
96
|
-
|
97
|
-
|
114
|
+
synchronize do
|
115
|
+
@objects ||= {}
|
116
|
+
@objects[bucket] ||= {}
|
117
|
+
end
|
98
118
|
end
|
99
119
|
end
|
100
120
|
end
|
data/lib/attachie/version.rb
CHANGED
@@ -21,6 +21,14 @@ RSpec.describe Attachie::FakeDriver do
|
|
21
21
|
|
22
22
|
expect(driver.list("bucket1", prefix: "object").to_a).to eq(["object1", "object2"])
|
23
23
|
end
|
24
|
+
|
25
|
+
it "sorts the objects by key" do
|
26
|
+
driver.store("object2", "blob", "bucket")
|
27
|
+
driver.store("object1", "blob", "bucket")
|
28
|
+
driver.store("object3", "blob", "bucket")
|
29
|
+
|
30
|
+
expect(driver.list("bucket").to_a).to eq(["object1", "object2", "object3"])
|
31
|
+
end
|
24
32
|
end
|
25
33
|
|
26
34
|
describe "#store" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attachie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Vetter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-s3
|