tww 1.1.0 → 2.0.2

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: 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