sms_kit 1.4.1 → 1.5.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: 6dda699a256d6ad3fc4bb852f118e9550de117cc1b3c9cef3a1f0162e9bb3bb8
4
- data.tar.gz: 34c514ac25b7527f955eff138fa741ecf1d7a9db531da42261c4919645bc7869
3
+ metadata.gz: b0e876bf680c9b0490171824da6b64d301615ed69764200d0ba62e81d765cec2
4
+ data.tar.gz: 57ca22cbb144df9fdd21599c751fcaeff567a1229be125b165ec3dbb0c3df9c7
5
5
  SHA512:
6
- metadata.gz: 6ff9da64ea1931927b400db9127665fcf791cd1f1bdf472fb851420d48f33f1f1ba9a9062e0b5a1d7f7dce8a6de3f99bfe47e85ac668264fe81be58521e835dd
7
- data.tar.gz: 42909029a02ecee36d541b4ae09bb283abdab1bd5b241816fe0b80d04075512556c2076719e1344a4d72aab920234088e4b498751158c627dff1c0428ea788ab
6
+ metadata.gz: b378096ffdb0e52464a8aade1193cfb43e911cf2307b6660291d750de40b3c1c5dd214b3585c7fd1e75a5b84ef1cc4eca7c70b91c8baf46f8039808b0eb82eb7
7
+ data.tar.gz: 3f9820b7aab4f7a538e4abbc5e6f99758d92172987a19e9d08a8be6bff4e025e4a6f48473b52ac705d22de01f1386321a027a9af1e002ddfce8d29d331ec54e0
data/README.md CHANGED
@@ -9,7 +9,7 @@ The goal is to offer one streamlined API for any provider adapter.
9
9
 
10
10
  Add this line to your application's Gemfile:
11
11
 
12
- gem 'sms_kit', github: 'jamii-Technologies/sms_kit'
12
+ gem 'sms_kit'
13
13
 
14
14
  And then execute:
15
15
 
@@ -76,6 +76,26 @@ MyProvider.deliver TextMessage.new
76
76
 
77
77
  ```
78
78
 
79
+ ### Custom Provider
80
+
81
+ ```rb
82
+ class MyProvider < SmsKit::Provider
83
+ # default url that the built-in http client will use
84
+ HTTP_ENDPOINT = 'https://www.example.com'.freeze
85
+
86
+ # ...
87
+
88
+ # custom connection configuration
89
+ # the default implementation (`super`) accepts a block
90
+ # which yields you a faraday instance
91
+ def connection
92
+ super do |conn|
93
+ conn.headers[:user_agent] = 'custom user agent'
94
+ end
95
+ end
96
+ end
97
+ ```
98
+
79
99
  #### Error handling
80
100
 
81
101
  SmsKit will throw a `SmsKit::DeliveryError` if something goes wrong.
data/lib/sms_kit.rb CHANGED
@@ -10,6 +10,4 @@ module SmsKit
10
10
  extend Logging
11
11
 
12
12
  class DeliveryError < StandardError; end
13
-
14
- USER_AGENT = "SmsKit #{VERSION}"
15
13
  end
data/lib/sms_kit/http.rb CHANGED
@@ -1,7 +1,9 @@
1
+ require 'sms_kit/version'
1
2
  require 'faraday'
2
3
 
3
4
  module SmsKit
4
5
  module HTTP
6
+ USER_AGENT = "SmsKit/#{VERSION} (https://rubygems.org/gems/sms_kit)"
5
7
 
6
8
  def uri
7
9
  @uri ||= URI.parse self.class.const_get 'HTTP_ENDPOINT'
@@ -16,7 +18,11 @@ module SmsKit
16
18
  end
17
19
 
18
20
  def connection
19
- @conn ||= Faraday.new "#{uri.scheme}://#{uri.host}", ssl: { verify: true } do |f|
21
+ if 'https' != uri.scheme
22
+ warn "[SmsKit] Provider '#{self.class.name}' is using an unencrypted connection: #{uri}"
23
+ end
24
+
25
+ @conn ||= Faraday.new "#{uri.scheme}://#{uri.host}" do |f|
20
26
  f.headers[:user_agent] = USER_AGENT
21
27
  f.response :logger, SmsKit.logger
22
28
  f.adapter Faraday.default_adapter
@@ -3,7 +3,7 @@ require 'sms_kit/provider'
3
3
  module SmsKit
4
4
  class CentralICT < Provider
5
5
 
6
- HTTP_ENDPOINT = 'http://api.de.centralict.net/controller/cgi/'
6
+ HTTP_ENDPOINT = 'https://api.de.centralict.net/controller/cgi/'
7
7
 
8
8
  def deliver
9
9
  response = get params
@@ -1,3 +1,3 @@
1
1
  module SmsKit
2
- VERSION = "1.4.1"
2
+ VERSION = "1.5.0"
3
3
  end
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://api.de.centralict.net/controller/cgi/?body&call=message_sender&dst&pin=&src=123456&subject=&type=SMS&uid=
5
+ uri: https://api.de.centralict.net/controller/cgi/?body&call=message_sender&dst&pin=&src=123456&subject=&type=SMS&uid=
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://api.de.centralict.net/controller/cgi/?body=foo+bar&call=message_sender&dst=12345&pin=&src=123456&subject=&type=SMS&uid=
5
+ uri: https://api.de.centralict.net/controller/cgi/?body=foo+bar&call=message_sender&dst=12345&pin=&src=123456&subject=&type=SMS&uid=
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: http://api.example.com/
5
+ uri: https://api.example.com/
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: '{"to":123456789,"text":"hello world"}'
data/test/helper.rb CHANGED
@@ -20,6 +20,10 @@ end
20
20
 
21
21
  require 'sms_kit/provider'
22
22
  class ExampleProvider < SmsKit::Provider
23
+ HTTP_ENDPOINT = 'https://www.example.com'.freeze
24
+ end
25
+
26
+ class InsecureProvider < SmsKit::Provider
23
27
  HTTP_ENDPOINT = 'http://www.example.com'.freeze
24
28
  end
25
29
 
data/test/http_test.rb CHANGED
@@ -3,7 +3,7 @@ require 'helper'
3
3
  class MockProvider < ExampleProvider
4
4
  def connection
5
5
  super do |conn|
6
- conn.headers[:user_agent] = 'customer user agent'
6
+ conn.headers[:user_agent] = 'custom user agent'
7
7
  end
8
8
  end
9
9
  end
@@ -11,12 +11,28 @@ end
11
11
  class HttpTest < MiniTest::Test
12
12
 
13
13
  def setup
14
+ @default = ExampleProvider.new
14
15
  @mock = MockProvider.new
16
+ @insecure = InsecureProvider.new
15
17
  end
16
18
 
17
19
  def test_connection_config
18
20
  conn = @mock.connection
19
- assert_equal 'customer user agent', conn.headers[:user_agent]
21
+ assert_equal 'custom user agent', conn.headers[:user_agent]
22
+ end
23
+
24
+ def test_default_user_agent
25
+ assert_equal \
26
+ "SmsKit/#{SmsKit::VERSION} (https://rubygems.org/gems/sms_kit)",
27
+ @default.connection.headers[:user_agent]
28
+ end
29
+
30
+ def test_insecure_warning
31
+ _, err = capture_io do
32
+ @insecure.connection
33
+ end
34
+ expected = "[SmsKit] Provider 'InsecureProvider' is using an unencrypted connection: http://www.example.com\n"
35
+ assert_equal expected, err
20
36
  end
21
37
 
22
38
  end
@@ -2,7 +2,7 @@ require 'helper'
2
2
  require 'sms_kit/provider'
3
3
 
4
4
  class StubProvider < SmsKit::Provider
5
- HTTP_ENDPOINT = 'http://api.example.com'.freeze
5
+ HTTP_ENDPOINT = 'https://api.example.com'.freeze
6
6
 
7
7
  def deliver options = {}
8
8
  response = post data.to_json
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - glaszig
@@ -11,89 +11,103 @@ cert_chain: []
11
11
  date: 2020-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '13.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '5.13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '5.13'
41
41
  - !ruby/object:Gem::Dependency
42
- name: minitest
42
+ name: webmock
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.11.3
47
+ version: '3.7'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.11.3
54
+ version: '3.7'
55
55
  - !ruby/object:Gem::Dependency
56
- name: webmock
56
+ name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.3.0
61
+ version: 5.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 3.3.0
68
+ version: 5.0.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: vcr
70
+ name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 4.0.0
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 4.0.0
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: faraday
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.14.0
103
+ version: '1.0'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.14.0
110
+ version: '1.0'
97
111
  description: SmsKit offers a streamlined API for sending text messages through any
98
112
  supported provider.
99
113
  email: