attachie 1.2.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 426ea398ce4c4a06805ccc1d3640e1fa67288e1c468cd06c7373335f4c9367b9
4
- data.tar.gz: 4b4727398f90606dd4ef40beb4bb09e76c907551a94838f029e5801e374438c6
3
+ metadata.gz: c4dc1a3393421a2accb0c07990ac3375b430fc2476426a0621526455351c7ee4
4
+ data.tar.gz: 951319408c1cc9d4780d3cdf0431e1867b564e8ae27a948100fa6c2393c07cdb
5
5
  SHA512:
6
- metadata.gz: 5720192d8aa3f016822f72e0a496f92da3540e37af468e5051d9b27b0ab6425fff71568896d0dcd8c5c71fa8610dbf5c09b80ed01da243bea447cb16020a0a59
7
- data.tar.gz: ed58ffa041525bb43d676cf505267de7c3814eec9e497ca07ca06d91c05a168983c31e65ba36713a4db74c1e0c727bdca63f0cd4707820205bc936bdf8d7e0a2
6
+ metadata.gz: dcca0e92e21b2acf9ca876a6f38edb4fffc142d117ac365e2bf0f186fb2513beba3fba6dfc4c4fd29f519ff81819a6cb3b9f8eabc9a14bca6ddf466d549de1f4
7
+ data.tar.gz: a11a61a127abef07278e36f6db19e13e0ce3c12d6412cd91fa85e8aed5569e0cd15df01b543dabe1e5160a954216921ed36d0725d68d4f24960964beeaa1f9a0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.0.0
4
+ ### BREAKING
5
+ * Wrap `Aws::S3::Errors::NotFound` from `Attachie::S3Driver` and
6
+ `Errno::ENOENT` from `Attachie::FileDriver` in `Attachie::ItemNotFound`
7
+ * Change `Attachie::FakeDriver::ItemNotFound` to `Attachie::ItemNotFound`
8
+ * Make `#delete` always return `true` for all drivers
9
+ ### Added
10
+ * Added `Attachie::BaseError` as a base for all attachie exceptions
11
+
3
12
  ## 1.2.1
4
13
  ### Fixed
5
14
  * Fix regarding `File.exists?` being no longer available in ruby 3.2
@@ -34,8 +34,6 @@ module Attachie
34
34
  class FakeDriver
35
35
  include MonitorMixin
36
36
 
37
- class ItemNotFound < StandardError; end
38
-
39
37
  def list(bucket, prefix: nil)
40
38
  return enum_for(:list, bucket, prefix: prefix) unless block_given?
41
39
 
@@ -48,6 +46,8 @@ module Attachie
48
46
 
49
47
  def info(name, bucket)
50
48
  synchronize do
49
+ raise(ItemNotFound, "Object #{ name } does not exist in bucket #{ bucket }") unless objects(bucket).key?(name)
50
+
51
51
  {
52
52
  last_modified: objects(bucket)[name][:last_modified],
53
53
  content_length: objects(bucket)[name][:data].size,
@@ -82,6 +82,8 @@ module Attachie
82
82
  synchronize do
83
83
  objects(bucket).delete(name)
84
84
  end
85
+
86
+ true
85
87
  end
86
88
 
87
89
  def value(name, bucket)
@@ -75,6 +75,8 @@ module Attachie
75
75
  content_type: MIME::Types.of(name).first&.to_s,
76
76
  content_length: File.size(path_for(name, bucket))
77
77
  }
78
+ rescue Errno::ENOENT => e
79
+ raise ItemNotFound, e.message
78
80
  end
79
81
 
80
82
  def store_multipart(name, bucket, options = {}, &block)
@@ -87,6 +89,8 @@ module Attachie
87
89
 
88
90
  def value(name, bucket)
89
91
  File.binread path_for(name, bucket)
92
+ rescue Errno::ENOENT => e
93
+ raise ItemNotFound, e.message
90
94
  end
91
95
 
92
96
  def download(name, bucket, dest_path)
@@ -95,6 +99,8 @@ module Attachie
95
99
  FileUtils.mkdir_p File.dirname(path)
96
100
 
97
101
  FileUtils.cp(path, dest_path)
102
+ rescue Errno::ENOENT => e
103
+ raise ItemNotFound, e.message
98
104
  end
99
105
 
100
106
  def delete(name, bucket)
@@ -84,6 +84,8 @@ module Attachie
84
84
  last_modified: object.last_modified,
85
85
  content_type: object.content_type
86
86
  }
87
+ rescue Aws::S3::Errors::NotFound => e
88
+ raise ItemNotFound, e.message
87
89
  end
88
90
 
89
91
  def store(name, data_or_io, bucket, options = {})
@@ -112,14 +114,20 @@ module Attachie
112
114
 
113
115
  def value(name, bucket)
114
116
  s3_resource.bucket(bucket).object(name).get.body.read.force_encoding(Encoding::BINARY)
117
+ rescue Aws::S3::Errors::NotFound => e
118
+ raise ItemNotFound, e.message
115
119
  end
116
120
 
117
121
  def download(name, bucket, path)
118
122
  s3_resource.bucket(bucket).object(name).download_file(path)
123
+ rescue Aws::S3::Errors::NotFound => e
124
+ raise ItemNotFound, e.message
119
125
  end
120
126
 
121
127
  def delete(name, bucket)
122
128
  s3_resource.bucket(bucket).object(name).delete
129
+
130
+ true
123
131
  end
124
132
 
125
133
  def exists?(name, bucket)
@@ -1,3 +1,3 @@
1
1
  module Attachie
2
- VERSION = "1.2.1"
2
+ VERSION = "2.0.0"
3
3
  end
data/lib/attachie.rb CHANGED
@@ -4,10 +4,12 @@ require "attachie/interpolation"
4
4
  require "active_support/all"
5
5
 
6
6
  module Attachie
7
- class UnknownAttachment < StandardError; end
8
- class NoSuchVersion < StandardError; end
9
- class InterpolationError < StandardError; end
10
- class NotSupported < StandardError; end
7
+ class BaseError < StandardError; end
8
+ class UnknownAttachment < BaseError; end
9
+ class NoSuchVersion < BaseError; end
10
+ class InterpolationError < BaseError; end
11
+ class NotSupported < BaseError; end
12
+ class ItemNotFound < BaseError; end
11
13
 
12
14
  def self.default_options
13
15
  @default_options ||= { :protocol => "http" }
@@ -53,6 +53,16 @@ RSpec.describe Attachie::FakeDriver do
53
53
  tempfile.close(true)
54
54
  end
55
55
  end
56
+
57
+ it "raises an Attachie::ItemNotFound when the object does not exist" do
58
+ tempfile = Tempfile.new
59
+
60
+ begin
61
+ expect { driver.download("unknown", "bucket", tempfile.path) }.to raise_error(Attachie::ItemNotFound)
62
+ ensure
63
+ tempfile.close(true)
64
+ end
65
+ end
56
66
  end
57
67
 
58
68
  describe "#store_multipart" do
@@ -75,6 +85,10 @@ RSpec.describe Attachie::FakeDriver do
75
85
  driver.delete("name", "bucket")
76
86
  expect(driver.exists?("name", "bucket")).to be(false)
77
87
  end
88
+
89
+ it "returns true even when the object does not exist" do
90
+ expect(driver.delete("unknown", "bucket")).to eq(true)
91
+ end
78
92
  end
79
93
 
80
94
  describe "#temp_url" do
@@ -97,6 +111,10 @@ RSpec.describe Attachie::FakeDriver do
97
111
  last_modified: timestamp
98
112
  )
99
113
  end
114
+
115
+ it "raises an Attachie::ItemNotFound when the object does not exist" do
116
+ expect { driver.info("unknown", "bucket") }.to raise_error(Attachie::ItemNotFound)
117
+ end
100
118
  end
101
119
  end
102
120
 
@@ -37,6 +37,16 @@ RSpec.describe Attachie::FileDriver do
37
37
  tempfile.close(true)
38
38
  end
39
39
  end
40
+
41
+ it "raises an Attachie::ItemNotFound when the object does not exist" do
42
+ tempfile = Tempfile.new
43
+
44
+ begin
45
+ expect { driver.download("unknown", "bucket", tempfile.path) }.to raise_error(Attachie::ItemNotFound)
46
+ ensure
47
+ tempfile.close(true)
48
+ end
49
+ end
40
50
  end
41
51
 
42
52
  describe" #store_multipart" do
@@ -67,6 +77,10 @@ RSpec.describe Attachie::FileDriver do
67
77
  driver.delete("name", "bucket")
68
78
  end
69
79
  end
80
+
81
+ it "returns true even when the object does not exist" do
82
+ expect(driver.delete("unknown", "bucket")).to eq(true)
83
+ end
70
84
  end
71
85
 
72
86
  describe "#info" do
@@ -83,6 +97,10 @@ RSpec.describe Attachie::FileDriver do
83
97
  driver.delete("name.txt", "bucket")
84
98
  end
85
99
  end
100
+
101
+ it "raises an Attachie::ItemNotFound when the object does not exist" do
102
+ expect { driver.info("unknown", "bucket") }.to raise_error(Attachie::ItemNotFound)
103
+ end
86
104
  end
87
105
  end
88
106
 
@@ -55,6 +55,16 @@ RSpec.describe Attachie::S3Driver do
55
55
  tempfile.close(true)
56
56
  end
57
57
  end
58
+
59
+ it "raises an Attachie::ItemNotFound when the object does not exist" do
60
+ tempfile = Tempfile.new
61
+
62
+ begin
63
+ expect { driver.download("unknown", "bucket", tempfile.path) }.to raise_error(Attachie::ItemNotFound)
64
+ ensure
65
+ tempfile.close(true)
66
+ end
67
+ end
58
68
  end
59
69
 
60
70
  describe "#store_multipart" do
@@ -85,6 +95,10 @@ RSpec.describe Attachie::S3Driver do
85
95
  driver.delete("name", "bucket")
86
96
  end
87
97
  end
98
+
99
+ it "returns true even when the object does not exist" do
100
+ expect(driver.delete("unknown", "bucket")).to eq(true)
101
+ end
88
102
  end
89
103
 
90
104
  describe "#temp_url" do
@@ -131,6 +145,10 @@ RSpec.describe Attachie::S3Driver do
131
145
  driver.delete("name.txt", "bucket")
132
146
  end
133
147
  end
148
+
149
+ it "raises an Attachie::ItemNotFound when the object does not exist" do
150
+ expect { driver.info("unknown", "bucket") }.to raise_error(Attachie::ItemNotFound)
151
+ end
134
152
  end
135
153
  end
136
154
 
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.2.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Vetter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-28 00:00:00.000000000 Z
11
+ date: 2023-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-s3