bmc 1.3.4 → 1.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36427ac2fef1204c03e2312f26c86ae44adb70e06db9eee946b4ed492981465d
4
- data.tar.gz: a3d8968195b88c1c01672ac01e77a49580afafced26ec4934447645041b305da
3
+ metadata.gz: 9fd16af5d254b75668c6cf72c45955014c4ae316bbf8bfbe0eb551878b3d120e
4
+ data.tar.gz: 749195388d1b99320fc8f121ec7e354ae9fe4ececb208f78b8887af8b292a9ad
5
5
  SHA512:
6
- metadata.gz: cc1d839ab3c11269332e6bfdd21cbd8ecfa08dd32f5e24e8fdba58de35bab82160d06ca8ff1ea59a3c257511f108dcfaf5deb44e6cd865dad482d33efdffd30d
7
- data.tar.gz: 0dcc1dd8dbc696d9dd52aa584322e64d6dd627b00c1b463f0e6c3b3b131173c6368dd48897207c2609c73281f5ff056a93b5272ec11f47cb889ce32cf0065dff
6
+ metadata.gz: e34b1f01c27dcc22543c98f3933328c94cbbeab6d70f01a91b765bcdc52732f6f06d53861a0c6148da108f3171279cb7c50ddb8aac57425ec24be4253d4a3328
7
+ data.tar.gz: 395d06ebd7a05f5d1fcbc7cf26c2c6b2432f2c285c569b787e7991cd2a9bb6b473f5e7d2e17a57586f5e66693c6265954b40e14cfe2ae60641827f52f99fd716
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Next version
4
4
 
5
+ ## v1.4.0
6
+ - Bug fixes
7
+ - Ruby min version is 2.7.2
8
+
9
+ ## v1.3.5
10
+ - Add Sendinblue SMS strategy
11
+
5
12
  ## v1.3.4
6
13
  - Add `all` support to filters `ByKeyValue` and `ByKeyValues`
7
14
 
@@ -44,7 +44,7 @@ class BMC::Filter
44
44
  end
45
45
  end
46
46
 
47
- def respond_to_missing?(method, *)
47
+ def respond_to_missing?(method, include_private = false)
48
48
  super || strategies.key?(method.to_s) || strategies.key?(method.to_s.chomp("="))
49
49
  end
50
50
 
@@ -17,7 +17,7 @@ class BMC::MiniModelSerializer::Serializer < BMC::MiniModelSerializer::Serialize
17
17
  end
18
18
  end
19
19
 
20
- def respond_to_missing?(m, *)
20
+ def respond_to_missing?(m, include_private = false)
21
21
  super || object.respond_to?(m, true)
22
22
  end
23
23
  end
@@ -27,15 +27,15 @@ class BMC::SMS::ApplicationSMS
27
27
  class << self
28
28
  private :new
29
29
 
30
- def method_missing(m, *args)
30
+ def method_missing(m, ...)
31
31
  if respond_to_missing?(m)
32
- new(action_name: m).public_send(m, *args)
32
+ new(action_name: m).public_send(m, ...)
33
33
  else
34
34
  super
35
35
  end
36
36
  end
37
37
 
38
- def respond_to_missing?(m, *)
38
+ def respond_to_missing?(m, include_private = false)
39
39
  super || public_instance_methods.include?(m)
40
40
  end
41
41
  end # class << self
@@ -0,0 +1,2 @@
1
+ class BMC::SMS::DeliveryError < StandardError
2
+ end
@@ -0,0 +1,41 @@
1
+ class BMC::SMS::Strategies::Sendinblue
2
+ URL = "https://api.sendinblue.com/v3/transactionalSMS/sms"
3
+
4
+ DeliveryError = Class.new(BMC::SMS::DeliveryError)
5
+
6
+ attr_reader :api_key
7
+
8
+ def initialize(api_key: ENV["SENDINBLUE_API_KEY"])
9
+ @api_key = api_key
10
+ end
11
+
12
+ def call(data)
13
+ response = HTTP.request(:post, URL, headers: request_headers, json: request_body(data))
14
+
15
+ unless response.code.to_s.start_with?("2")
16
+ raise DeliveryError, "Invalid response: #{response.code} / #{response.body}"
17
+ end
18
+
19
+ true
20
+ end
21
+
22
+ private
23
+
24
+ def request_headers
25
+ {
26
+ :content_type => "application/json",
27
+ :api_key => api_key,
28
+ }
29
+ end
30
+
31
+ def request_body(data)
32
+ from = data[:from] || BMC::SMS.default_from
33
+
34
+ {
35
+ :type => "transactional",
36
+ :sender => from,
37
+ :recipient => data[:to],
38
+ :content => data[:body],
39
+ }
40
+ end
41
+ end
data/lib/bmc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module BMC
2
- VERSION = "1.3.4"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bmc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benoit MARTIN-CHAVE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-13 00:00:00.000000000 Z
11
+ date: 2022-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails-i18n
@@ -172,8 +172,10 @@ files:
172
172
  - app/sms/bmc/sms.rb
173
173
  - app/sms/bmc/sms/application_sms.rb
174
174
  - app/sms/bmc/sms/deliver_job.rb
175
+ - app/sms/bmc/sms/delivery_error.rb
175
176
  - app/sms/bmc/sms/message.rb
176
177
  - app/sms/bmc/sms/strategies/amazon.rb
178
+ - app/sms/bmc/sms/strategies/sendinblue.rb
177
179
  - app/sms/bmc/sms/strategies/test.rb
178
180
  - app/sorters/bmc/sorter.rb
179
181
  - app/views/bmc/search/_form.html.slim
@@ -221,7 +223,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
223
  requirements:
222
224
  - - ">="
223
225
  - !ruby/object:Gem::Version
224
- version: '0'
226
+ version: 2.7.2
225
227
  required_rubygems_version: !ruby/object:Gem::Requirement
226
228
  requirements:
227
229
  - - ">="