postmark 1.22.3 → 1.24.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: ef3cc236986909ab3ad5351bb3642a525f5d0a7826a270d35e9eadde0f37021b
4
- data.tar.gz: 824731c2567364402cc9866c0f0da8abcbd974809fb9e237238c8581da72f8f8
3
+ metadata.gz: 36d183adb014f24f30c12f04f65d01d9a4565e46bac544fcf499f1834d98b15f
4
+ data.tar.gz: 23d80a64a061b7bce98a7040a0b64b7e56611aea995894764d201e5ee71fdf69
5
5
  SHA512:
6
- metadata.gz: 9ef7a11422e2415ec69c1614d77a12d89b3b2fd94f7ba5d9ddb56c6e7671b4213de9b1480c8840125f65ef00eadbca6f56e265fcf9dd5ae82d17f224f56f1a98
7
- data.tar.gz: c3d90f8162206e6174bc9edd141164a8349288f36504e019d69a34a7eb8d1aa822d71e80319bfdef22cf028fde5b9f6d0ae5b4d9b866f054a55a481164c1c4ff
6
+ metadata.gz: a132d891995e587fc6324cbed9626799a7919f0314b4402910593e47afb02281b25fd6b8971a20197774dd37d48c7221389047699b9cbf98a2cdfecce3e247b6
7
+ data.tar.gz: 26b78de0eefb4c6055e2edee3f787ddab17c49f49fbbd4e8bf02100f85202cc46d57ff4c140617f0c1cd7c325875e602fc952c8b9a528a9ad9feed25ee9d76b1
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,11 @@
1
1
  = Changelog
2
2
 
3
+ == 1.24.0
4
+ * Added configurable warnings when referencing deprecated classes.
5
+
6
+ == 1.23.0
7
+ * Deprecated `InvalidEmailAddressError`. New name is `InvalidEmailRequestError`.
8
+
3
9
  == 1.22.3
4
10
  * Increased default timeout values
5
11
 
data/README.md CHANGED
@@ -48,6 +48,15 @@ Without Bundler:
48
48
  gem install postmark
49
49
  ```
50
50
 
51
+ ## Deprecations
52
+
53
+ Deprecations can be either silenced or set to raise using:
54
+
55
+ ```rb
56
+ Postmark::Deprecations.behavior = :silence
57
+ Postmark::Deprecations.behavior = :raise
58
+ ```
59
+
51
60
  ## Note on Patches/Pull Requests
52
61
 
53
62
  See [CONTRIBUTING.md](CONTRIBUTING.md) file for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.22.3
1
+ 1.24.0
@@ -0,0 +1,35 @@
1
+ module Postmark
2
+ def self.const_missing(const_name)
3
+ replacement = Deprecations.deprecated_constants.fetch(const_name, nil) || super
4
+ Deprecations.report("DEPRECATION WARNING: the class #{const_name} is deprecated. Use #{replacement} instead.")
5
+ replacement
6
+ end
7
+
8
+ module Deprecations
9
+ DEFAULT_BEHAVIORS = {
10
+ :raise => lambda { |message| raise message },
11
+ :log => lambda { |message| warn message },
12
+ :silence => lambda { |message| },
13
+ }
14
+
15
+ def self.report(message)
16
+ DEFAULT_BEHAVIORS.fetch(behavior).call(message)
17
+ end
18
+
19
+ def self.deprecated_constants
20
+ @deprecated_constants ||= {}
21
+ end
22
+
23
+ def self.behavior
24
+ @behavior ||= :log
25
+ end
26
+
27
+ def self.behavior=(behavior)
28
+ @behavior = behavior
29
+ end
30
+
31
+ def self.add_constants(mappings)
32
+ deprecated_constants.merge!(mappings)
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,5 @@
1
+ require 'postmark/deprecations'
2
+
1
3
  module Postmark
2
4
  class Error < ::StandardError; end
3
5
 
@@ -43,7 +45,7 @@ module Postmark
43
45
 
44
46
  class ApiInputError < HttpServerError
45
47
  INACTIVE_RECIPIENT = 406
46
- INVALID_EMAIL_ADDRESS = 300
48
+ INVALID_EMAIL_REQUEST = 300
47
49
 
48
50
  attr_accessor :error_code
49
51
 
@@ -53,8 +55,8 @@ module Postmark
53
55
  case error_code
54
56
  when INACTIVE_RECIPIENT
55
57
  InactiveRecipientError.new(error_code, body, parsed_body)
56
- when INVALID_EMAIL_ADDRESS
57
- InvalidEmailAddressError.new(error_code, body, parsed_body)
58
+ when INVALID_EMAIL_REQUEST
59
+ InvalidEmailRequestError.new(error_code, body, parsed_body)
58
60
  else
59
61
  new(error_code, body, parsed_body)
60
62
  end
@@ -70,7 +72,7 @@ module Postmark
70
72
  end
71
73
  end
72
74
 
73
- class InvalidEmailAddressError < ApiInputError; end
75
+ class InvalidEmailRequestError < ApiInputError; end
74
76
 
75
77
  class InactiveRecipientError < ApiInputError
76
78
  attr_reader :recipients
@@ -126,7 +128,10 @@ module Postmark
126
128
  class UnexpectedHttpResponseError < HttpServerError; end
127
129
 
128
130
  # Backwards compatible aliases
129
- DeliveryError = Error
130
- InvalidMessageError = ApiInputError
131
- UnknownError = UnexpectedHttpResponseError
131
+ Deprecations.add_constants(
132
+ :DeliveryError => Error,
133
+ :InvalidMessageError => ApiInputError,
134
+ :UnknownError => UnexpectedHttpResponseError,
135
+ :InvalidEmailAddressError => InvalidEmailRequestError
136
+ )
132
137
  end
@@ -1,3 +1,3 @@
1
1
  module Postmark
2
- VERSION = '1.22.3'
2
+ VERSION = '1.24.0'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -15,6 +15,8 @@ require File.join(File.expand_path(File.dirname(__FILE__)), 'support', 'shared_e
15
15
  require File.join(File.expand_path(File.dirname(__FILE__)), 'support', 'custom_matchers.rb')
16
16
  require File.join(File.expand_path(File.dirname(__FILE__)), 'support', 'helpers.rb')
17
17
 
18
+ Postmark::Deprecations.behavior = :silence
19
+
18
20
  if ENV['JSONGEM']
19
21
  # `JSONGEM=Yajl rake spec`
20
22
  Postmark.response_parser_class = ENV['JSONGEM'].to_sym
@@ -98,9 +98,9 @@ describe(Postmark::ApiInputError) do
98
98
  end
99
99
 
100
100
  context '300' do
101
- let(:code) {Postmark::ApiInputError::INVALID_EMAIL_ADDRESS}
101
+ let(:code) {Postmark::ApiInputError::INVALID_EMAIL_REQUEST}
102
102
 
103
- it {is_expected.to be_a(Postmark::InvalidEmailAddressError)}
103
+ it {is_expected.to be_a(Postmark::InvalidEmailRequestError)}
104
104
  it_behaves_like 'api input error'
105
105
  end
106
106
 
@@ -149,13 +149,13 @@ describe(Postmark::MailAdapterError) do
149
149
  it {is_expected.to be_a(Postmark::Error)}
150
150
  end
151
151
 
152
- describe(Postmark::InvalidEmailAddressError) do
152
+ describe(Postmark::InvalidEmailRequestError) do
153
153
  describe '.new' do
154
154
  let(:response) {{'Message' => message}}
155
155
 
156
156
  subject do
157
- Postmark::InvalidEmailAddressError.new(
158
- Postmark::ApiInputError::INVALID_EMAIL_ADDRESS, Postmark::Json.encode(response), response)
157
+ Postmark::InvalidEmailRequestError.new(
158
+ Postmark::ApiInputError::INVALID_EMAIL_REQUEST, Postmark::Json.encode(response), response)
159
159
  end
160
160
 
161
161
  let(:message) do
@@ -171,7 +171,7 @@ describe(Postmark::InvalidEmailAddressError) do
171
171
  end
172
172
 
173
173
  it 'error code is set' do
174
- expect(subject.error_code).to eq(Postmark::ApiInputError::INVALID_EMAIL_ADDRESS)
174
+ expect(subject.error_code).to eq(Postmark::ApiInputError::INVALID_EMAIL_REQUEST)
175
175
  end
176
176
  end
177
177
  end
@@ -274,3 +274,9 @@ describe(Postmark::UnknownError) do
274
274
  expect(subject.class).to eq(Postmark::UnexpectedHttpResponseError)
275
275
  end
276
276
  end
277
+
278
+ describe(Postmark::InvalidEmailAddressError) do
279
+ it 'is an alias for backwards compatibility' do
280
+ expect(subject.class).to eq(Postmark::InvalidEmailRequestError)
281
+ end
282
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postmark
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.3
4
+ version: 1.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomek Maszkowski
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2023-01-16 00:00:00.000000000 Z
16
+ date: 2023-04-07 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: json
@@ -88,6 +88,7 @@ files:
88
88
  - lib/postmark/api_client.rb
89
89
  - lib/postmark/bounce.rb
90
90
  - lib/postmark/client.rb
91
+ - lib/postmark/deprecations.rb
91
92
  - lib/postmark/error.rb
92
93
  - lib/postmark/handlers/mail.rb
93
94
  - lib/postmark/helpers/hash_helper.rb