sms_kit 1.4.1 → 1.5.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: 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: