tww 1.1.0 → 2.0.2

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: a9550febce380bcdc14eba253d6920146710368ef2203074b27bdea15b60f744
4
- data.tar.gz: cea5441f61216d759dd701d5dbbf51cb5e6d242cbf3385330f5cf8c3b60a75f9
3
+ metadata.gz: 409f5d11b108ae845371fff98d5b45bf147f982f3fabd757bf20d95a15b4f39a
4
+ data.tar.gz: c8dab98c88d72179107135386bebea8b721c856c5078d5898f7d33342df08cdd
5
5
  SHA512:
6
- metadata.gz: b663c9b21d83fc95a9a44fe224a2952cb0f3529e8e9b811c225f3cefc91c6a211baa9d002fad2c33544b738298dc4eb255c306261cc35e2eeb1844f39f495f6c
7
- data.tar.gz: 6981a9d9fcf42fd8c40cc91a2e4ac500a1dd3115dfcffcc73b3e057c36d61d15bfaaaad7dd191fa5c3f10cf03b7430a00650931094f1e0773a71e277f1902ed9
6
+ metadata.gz: 0f9c950ba027965f9c68cf1114682865b41fe60b5cd7de8a955cd2997ff6a7cf353a314ee11528070f2333f0d95c86ad1eb5f7860e0229eb7753bfb276d2f03c
7
+ data.tar.gz: 59724bbb9ef70f108aad4c9128846c0f5607d258f35e4e0274a039afd24d289ec0bd23f543458c7ec66851e8ccc286dd9813fcc2ab17f7eefc0af2b943dc6cc1
data/.travis.yml CHANGED
@@ -1,9 +1,9 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 2.5
5
4
  - 2.6
6
5
  - 2.7
6
+ - 3.0
7
7
 
8
8
  before_install:
9
9
  - gem update --system
data/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ # v2.0.1
2
+
3
+ ## Changes
4
+ - Update bundler version
5
+ - Update ruby version
6
+ - Update dependency version
7
+
8
+ # v2.0.0
9
+
10
+ ## Changes
11
+ - Remove rest-client dependency
12
+ - Optimize symbols as keys
13
+
14
+ # v1.2.0
15
+
16
+ ## Changes
17
+ - Add timeout to TWW gem request
data/README.md CHANGED
@@ -28,16 +28,16 @@ To send SMS:
28
28
 
29
29
  ```ruby
30
30
  TWW.config do |config|
31
- config.username = 'you username goes here'
32
- config.password= 'you password goes here'
33
- config.from = 'Your identification (OPTIONAL)'
34
- config.layout = 'Layout ID (JUST FOR VOICE MESSAGES)'
31
+ config[:username] = 'you username goes here'
32
+ config[:password]= 'you password goes here'
33
+ config[:from] = 'Your identification (OPTIONAL)'
34
+ config[:layout] = 'Layout ID (JUST FOR VOICE MESSAGES)'
35
+ config[:endpoint] = :secondary # :primary is default
35
36
  end
36
37
 
37
38
  client = TWW.client
38
39
 
39
40
  client.deliver('11987654321', 'Hello World using old fashioned SMS')
40
- client.call('11987654321', 'I just called to say I love you')
41
41
  ```
42
42
 
43
43
  You can inspect TWW response:
@@ -58,13 +58,6 @@ when resp.error?
58
58
  end
59
59
  ```
60
60
 
61
- You can use obscure parameters from TWW API.
62
-
63
- ```ruby
64
- # Previous setup
65
- client.call('11987654321', 'Var 1 value', var2: 'Var 2 value', retry: 3)
66
- ```
67
-
68
61
  To fake SMS:
69
62
 
70
63
  ```ruby
@@ -92,7 +85,7 @@ end
92
85
 
93
86
  ## Support
94
87
 
95
- It supports Ruby version 2.1.x, 2.2.x and 2.3.x.
88
+ It supports Ruby version 2.6 and later
96
89
 
97
90
  ## Development
98
91
 
data/lib/tww/client.rb CHANGED
@@ -4,27 +4,14 @@ require 'tww/response'
4
4
 
5
5
  module TWW
6
6
  class Client
7
- attr_reader :config, :sent
7
+ attr_reader :config
8
8
 
9
9
  def initialize(config)
10
10
  @config = config
11
- @sent = []
12
- end
13
-
14
- def clear!
15
- sent.clear
16
- end
17
-
18
- def size
19
- sent.size
20
11
  end
21
12
 
22
13
  def deliver(_phone, _message, _extras = {})
23
14
  raise 'Need to be implemented'
24
15
  end
25
-
26
- def call(_phone, _message, _extras = {})
27
- raise 'Need to be implemented'
28
- end
29
16
  end
30
17
  end
data/lib/tww/response.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rexml/document'
2
4
 
3
5
  module TWW
data/lib/tww/rest.rb CHANGED
@@ -1,57 +1,48 @@
1
- require 'restclient'
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
2
4
  require 'tww/client'
3
5
 
4
6
  module TWW
5
7
  class REST < Client
6
- SMS = 'https://webservices.twwwireless.com.br' +
7
- '/reluzcap/wsreluzcap.asmx/EnviaSMS'
8
-
9
- CALL = 'http://webservices.fonadas.tww.com.br' +
10
- '/ws/Fonadas.asmx/EnviaFonada'
8
+ ENDPOINTS = {
9
+ primary: 'https://webservices.twwwireless.com.br' \
10
+ '/reluzcap/wsreluzcap.asmx/EnviaSMS',
11
+ secondary: 'https://webservices2.twwwireless.com.br' \
12
+ '/reluzcap/wsreluzcap.asmx/EnviaSMS'
13
+ }.freeze
11
14
 
12
15
  def deliver(phone, message, extras = {})
13
- request(SMS, deliver_params(phone, message, extras))
14
- end
15
-
16
- def call(phone, message, extras = {})
17
- request(CALL, call_params(phone, message, extras))
16
+ request(endpoint, deliver_params(phone, message, extras))
18
17
  end
19
18
 
20
19
  private
21
- def call_params(phone, message, extras)
22
- now = Time.now.strftime('%Y-%m-%d %H:%M:%S')
23
20
 
24
- {
25
- numusu: config.username,
26
- senha: config.password,
27
- seunum: config.from,
28
- idlayout: config.layout,
29
- telefone: phone,
30
- dataagendamento: now,
31
- retry: 0,
32
- retrytime: 0,
33
- var1: message,
34
- var2: nil,
35
- var3: nil,
36
- var4: nil,
37
- var5: nil,
38
- var6: nil
39
- }.merge(extras)
21
+ def endpoint
22
+ ENDPOINTS[config.fetch(:endpoint, :primary)]
40
23
  end
41
24
 
42
25
  def deliver_params(phone, message, extras)
43
26
  {
44
- NumUsu: config.username,
45
- Senha: config.password,
46
- SeuNum: config.from,
27
+ NumUsu: config[:username],
28
+ Senha: config[:password],
29
+ SeuNum: config[:from],
47
30
  Celular: phone,
48
31
  Mensagem: message
49
32
  }.merge(extras)
50
33
  end
51
34
 
52
35
  def request(url, params)
53
- xml = RestClient.post(url, params)
54
- Response.parse(xml)
36
+ uri = URI(url)
37
+ use_ssl = uri.scheme == 'https'
38
+
39
+ Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
40
+ post = Net::HTTP::Post.new(uri)
41
+ post.set_form_data(params)
42
+ res = http.request(post)
43
+
44
+ Response.parse(res.body)
45
+ end
55
46
  end
56
47
  end
57
48
  end
data/lib/tww/testing.rb CHANGED
@@ -1,7 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tww/client'
2
4
 
3
5
  module TWW
4
6
  class Testing < Client
7
+ attr_reader :sent
8
+
9
+ def initialize(config)
10
+ super
11
+ @sent = []
12
+ end
13
+
14
+ def clear!
15
+ sent.clear
16
+ end
17
+
18
+ def size
19
+ sent.size
20
+ end
21
+
5
22
  def deliver(phone, message, extras = {})
6
23
  request(phone, message, extras)
7
24
  end
@@ -11,8 +28,9 @@ module TWW
11
28
  end
12
29
 
13
30
  private
14
- def request(phone, message, extras)
15
- Response.parse("<string>#{ status(phone) }</string>").tap do |response|
31
+
32
+ def request(phone, message, _extras)
33
+ Response.parse("<string>#{status(phone)}</string>").tap do |response|
16
34
  sent.push(phone: phone, message: message, response: response)
17
35
  end
18
36
  end
data/lib/tww/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TWW
2
- VERSION = '1.1.0'
4
+ VERSION = '2.0.2'
3
5
  end
data/lib/tww.rb CHANGED
@@ -1,15 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'tww/version'
4
- require 'tww/config'
5
4
  require 'tww/client'
6
5
  require 'tww/rest'
7
6
  require 'tww/testing'
8
7
 
9
8
  module TWW
9
+ @config = {}
10
+ @factory = TWW::REST
11
+
10
12
  class << self
13
+ attr_accessor :factory
14
+
11
15
  def config
12
- @config ||= Config.new
13
16
  @config.tap { |config| yield(config) if block_given? }
14
17
  end
15
18
 
@@ -25,6 +28,4 @@ module TWW
25
28
  @factory = TWW::REST
26
29
  end
27
30
  end
28
-
29
- disable_testing!
30
31
  end
data/tww.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'tww/version'
@@ -7,10 +6,10 @@ Gem::Specification.new do |spec|
7
6
  spec.name = 'tww'
8
7
  spec.version = TWW::VERSION
9
8
  spec.authors = ['Daniel Libanori']
10
- spec.email = ['daniellibanori@gmail.com']
9
+ spec.email = ['daniel.libanori@clicksign.com']
11
10
 
12
11
  spec.summary = 'Send SMS from TWW provider'
13
- spec.homepage = 'https://github.com/dlibanori/tww'
12
+ spec.homepage = 'https://github.com/clicksign/tww'
14
13
  spec.license = 'MIT'
15
14
 
16
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -18,13 +17,14 @@ Gem::Specification.new do |spec|
18
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
18
  spec.require_paths = ['lib']
20
19
 
21
- spec.required_ruby_version = '>= 2.1.0'
22
- spec.add_dependency 'rest-client', '~> 2.0'
20
+ spec.required_ruby_version = '>= 2.6.0'
23
21
 
24
- spec.add_development_dependency 'bundler', '~> 2.1'
22
+ spec.add_runtime_dependency 'rexml', '~> 3.2'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 2.2'
25
25
  spec.add_development_dependency 'rake', '~> 13.0'
26
- spec.add_development_dependency 'rspec', '~> 3.9'
27
- spec.add_development_dependency 'cucumber', '~> 3.1'
28
- spec.add_development_dependency 'coveralls', '~> 0.8.0'
29
- spec.add_development_dependency 'webmock', '~> 3.8'
26
+ spec.add_development_dependency 'rspec', '~> 3.10'
27
+ spec.add_development_dependency 'cucumber', '~> 6.1'
28
+ spec.add_development_dependency 'coveralls', '~> 0.8'
29
+ spec.add_development_dependency 'webmock', '~> 3.13'
30
30
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tww
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Libanori
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2021-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest-client
14
+ name: rexml
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '3.2'
20
20
  type: :runtime
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: '2.0'
26
+ version: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.1'
33
+ version: '2.2'
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: '2.1'
40
+ version: '2.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,59 +58,59 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.9'
61
+ version: '3.10'
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.9'
68
+ version: '3.10'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: cucumber
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.1'
75
+ version: '6.1'
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: '3.1'
82
+ version: '6.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: coveralls
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.8.0
89
+ version: '0.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.8.0
96
+ version: '0.8'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '3.8'
103
+ version: '3.13'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '3.8'
111
- description:
110
+ version: '3.13'
111
+ description:
112
112
  email:
113
- - daniellibanori@gmail.com
113
+ - daniel.libanori@clicksign.com
114
114
  executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
@@ -119,6 +119,7 @@ files:
119
119
  - ".rspec"
120
120
  - ".rubocop.yml"
121
121
  - ".travis.yml"
122
+ - CHANGELOG.md
122
123
  - Gemfile
123
124
  - LICENSE.txt
124
125
  - README.md
@@ -127,17 +128,16 @@ files:
127
128
  - bin/setup
128
129
  - lib/tww.rb
129
130
  - lib/tww/client.rb
130
- - lib/tww/config.rb
131
131
  - lib/tww/response.rb
132
132
  - lib/tww/rest.rb
133
133
  - lib/tww/testing.rb
134
134
  - lib/tww/version.rb
135
135
  - tww.gemspec
136
- homepage: https://github.com/dlibanori/tww
136
+ homepage: https://github.com/clicksign/tww
137
137
  licenses:
138
138
  - MIT
139
139
  metadata: {}
140
- post_install_message:
140
+ post_install_message:
141
141
  rdoc_options: []
142
142
  require_paths:
143
143
  - lib
@@ -145,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - ">="
147
147
  - !ruby/object:Gem::Version
148
- version: 2.1.0
148
+ version: 2.6.0
149
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - ">="
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  version: '0'
154
154
  requirements: []
155
155
  rubygems_version: 3.0.3
156
- signing_key:
156
+ signing_key:
157
157
  specification_version: 4
158
158
  summary: Send SMS from TWW provider
159
159
  test_files: []
data/lib/tww/config.rb DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TWW
4
- Config = Struct.new(:username, :password, :from, :layout) do
5
- def merge(attributes = {})
6
- attributes.empty? ? self : dup.copy(attributes)
7
- end
8
-
9
- def copy(attributes)
10
- tap { attributes.each { |k, v| self[k] = v } }
11
- end
12
- end
13
- end