locasms 0.5.0 → 1.1.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 +4 -4
- data/.github/workflows/test.yml +27 -0
- data/.rubocop.yml +5 -1
- data/.rubocop_todo.yml +0 -12
- data/README.md +1 -1
- data/lib/locasms/client.rb +6 -9
- data/lib/locasms/helpers/date_time_helper.rb +1 -1
- data/lib/locasms/rest_client.rb +2 -2
- data/lib/locasms/version.rb +1 -1
- data/locasms.gemspec +8 -7
- data/spec/lib/locasms/client_spec.rb +17 -14
- data/spec/lib/locasms/helpers/date_time_helper_spec.rb +23 -6
- data/spec/lib/locasms/rest_client_spec.rb +1 -1
- metadata +39 -30
- data/.travis.yml +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c77f667632cbccd85f567f099b9bcef15815dcae6ad9726ef243ed632e983529
|
4
|
+
data.tar.gz: b20250459c3bcbff6777655dc0e03a5f109b40129bff4ff4291683dba55895b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbc9a23ee178d5572bc3ffed4722a27db9a3dc614f92b57d674859bd030fce05e9e37b3af6e7de7d14c90ba8d96e522271360a856585f4e53a29503615df03f8
|
7
|
+
data.tar.gz: f3569d9edf7307a17fe914e77ce94906241db9ef19a58fcce7b4c0fbcf96d1400da53cfea238b9c6694fd96f64b0d92715b1ded5ecb2adb7bfb05d90b7efad1f
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: test
|
2
|
+
on: [pull_request]
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
lint:
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
steps:
|
8
|
+
- uses: actions/checkout@v2
|
9
|
+
- uses: ruby/setup-ruby@v1
|
10
|
+
with:
|
11
|
+
ruby-version: 2.7
|
12
|
+
bundler-cache: true
|
13
|
+
- run: bundle exec rubocop
|
14
|
+
|
15
|
+
test:
|
16
|
+
strategy:
|
17
|
+
fail-fast: false
|
18
|
+
matrix:
|
19
|
+
ruby: [2.6, 2.7, "3.0", "3.1", jruby, jruby-head]
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
steps:
|
22
|
+
- uses: actions/checkout@v2
|
23
|
+
- uses: ruby/setup-ruby@v1
|
24
|
+
with:
|
25
|
+
ruby-version: ${{ matrix.ruby }}
|
26
|
+
bundler-cache: true
|
27
|
+
- run: bundle exec rspec
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
CHANGED
@@ -16,15 +16,3 @@ Metrics/BlockLength:
|
|
16
16
|
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods.
|
17
17
|
Metrics/MethodLength:
|
18
18
|
Max: 27
|
19
|
-
|
20
|
-
# Offense count: 1
|
21
|
-
# Configuration parameters: CountKeywordArgs.
|
22
|
-
Metrics/ParameterLists:
|
23
|
-
Max: 13
|
24
|
-
|
25
|
-
# Offense count: 1
|
26
|
-
# Cop supports --auto-correct.
|
27
|
-
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
28
|
-
# URISchemes: http, https
|
29
|
-
Layout/LineLength:
|
30
|
-
Max: 179
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# locasms
|
2
|
-
[](http://badge.fury.io/rb/locasms) [](http://badge.fury.io/rb/locasms) [](https://codeclimate.com/github/mcorp/locasms) [](https://codeclimate.com/github/mcorp/locasms/test_coverage) [](http://inch-ci.org/github/mcorp/locasms)
|
3
3
|
|
4
4
|
> :warning: After `February, 10, 2018` the base IP of the service will change as noticed on this [issue](https://github.com/mcorp/locasms/issues/21). If you don't upgrade to version `0.3.1` your app will stop delivering SMS.
|
5
5
|
|
data/lib/locasms/client.rb
CHANGED
@@ -73,7 +73,9 @@ module LocaSMS
|
|
73
73
|
def campaign_status(id)
|
74
74
|
response = rest.get(:getstatus, id: id)
|
75
75
|
begin
|
76
|
-
CSV.new(
|
76
|
+
CSV.new(
|
77
|
+
response['data'] || '', col_sep: ';', quote_char: '"'
|
78
|
+
).map do |delivery_id, _, enqueue_time, _, delivery_time, _, status, _, _, carrier, mobile_number, _, message| # rubocop:disable Metrics/ParameterLists
|
77
79
|
status = case status
|
78
80
|
when /aguardando envio/i
|
79
81
|
waiting
|
@@ -86,14 +88,9 @@ module LocaSMS
|
|
86
88
|
end
|
87
89
|
|
88
90
|
{
|
89
|
-
campaign_id: id,
|
90
|
-
|
91
|
-
|
92
|
-
delivery_time: delivery_time,
|
93
|
-
status: status,
|
94
|
-
carrier: carrier,
|
95
|
-
mobile_number: mobile_number,
|
96
|
-
message: message
|
91
|
+
campaign_id: id, delivery_id: delivery_id, enqueue_time: enqueue_time,
|
92
|
+
delivery_time: delivery_time, status: status, carrier: carrier,
|
93
|
+
mobile_number: mobile_number, message: message
|
97
94
|
}
|
98
95
|
end
|
99
96
|
rescue StandardError
|
data/lib/locasms/rest_client.rb
CHANGED
@@ -75,7 +75,7 @@ module LocaSMS
|
|
75
75
|
# @raise [LocaSMS::InvalidOperation] when asked for an invalid operation
|
76
76
|
# @raise [LocaSMS::InvalidLogin] when the given credentials are invalid
|
77
77
|
def parse_response(action, response)
|
78
|
-
raise InvalidOperation.new(action: action) if response
|
78
|
+
raise InvalidOperation.new(action: action) if response.match?(/^0:OPERACAO INVALIDA$/i)
|
79
79
|
|
80
80
|
j = begin
|
81
81
|
MultiJson.load(response)
|
@@ -85,7 +85,7 @@ module LocaSMS
|
|
85
85
|
|
86
86
|
return j if (j['status'] == 1) || (action == :getstatus)
|
87
87
|
|
88
|
-
raise InvalidLogin.new(action: action) if j['msg']
|
88
|
+
raise InvalidLogin.new(action: action) if j['msg'].match?(/^falha ao realizar login$/i)
|
89
89
|
|
90
90
|
raise LocaSMS::Exception.new(message: j['msg'], raw: response, action: action)
|
91
91
|
end
|
data/lib/locasms/version.rb
CHANGED
data/locasms.gemspec
CHANGED
@@ -14,13 +14,13 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.summary = 'Cliente para disparo de SMS, regular e Short Code, através da LocaSMS/SMS Plataforma'
|
15
15
|
spec.homepage = 'https://github.com/mcorp/locasms'
|
16
16
|
spec.license = 'MIT'
|
17
|
+
spec.metadata = { 'rubygems_mfa_required' => 'true' }
|
17
18
|
|
18
19
|
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
19
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.required_ruby_version = '
|
23
|
+
spec.required_ruby_version = '>= 2.6'
|
24
24
|
|
25
25
|
spec.add_dependency 'multi_json', '~> 1.13'
|
26
26
|
|
@@ -28,17 +28,18 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'rake', '~> 13.0'
|
29
29
|
|
30
30
|
# test stuff
|
31
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3.11'
|
32
32
|
spec.add_development_dependency 'timecop', '~> 0.9'
|
33
33
|
|
34
34
|
# for documentation
|
35
|
-
spec.add_development_dependency 'redcarpet', '~> 3.5'
|
36
35
|
spec.add_development_dependency 'yard', '~> 0.9'
|
37
36
|
|
38
37
|
# for code coverage
|
39
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
38
|
+
spec.add_development_dependency 'simplecov', '~> 0.21'
|
40
39
|
|
41
40
|
# for code quality
|
42
|
-
spec.add_development_dependency 'rubocop',
|
43
|
-
spec.add_development_dependency 'rubocop-
|
41
|
+
spec.add_development_dependency 'rubocop', '~> 1.36'
|
42
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.15'
|
43
|
+
spec.add_development_dependency 'rubocop-rake', '~> 0.6'
|
44
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.13'
|
44
45
|
end
|
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe LocaSMS::Client do # rubocop:disable RSpec/FilePath
|
6
6
|
subject(:client) { described_class.new :login, :password, rest_client: rest_client, callback: nil }
|
7
7
|
|
8
|
-
let(:rest_client) { instance_double
|
8
|
+
let(:rest_client) { instance_double LocaSMS::RestClient }
|
9
9
|
let(:base_args) { { msg: 'given message', numbers: '11988889991,11988889992,11988889993' } }
|
10
10
|
let(:default_callback_args) { base_args.merge(url_callback: 'default') }
|
11
11
|
let(:some_callback_args) { base_args.merge(url_callback: 'something') }
|
@@ -115,7 +115,8 @@ describe LocaSMS::Client do # rubocop:disable RSpec/FilePath
|
|
115
115
|
it 'when callback given as arg to #deliver' do
|
116
116
|
allow(rest_client).to receive(:get).and_return({})
|
117
117
|
|
118
|
-
client.deliver_at 'given message', '2020-10-10 10:10', '11988889991', '11988889992', '11988889993',
|
118
|
+
client.deliver_at 'given message', '2020-10-10 10:10', '11988889991', '11988889992', '11988889993',
|
119
|
+
url_callback: 'something'
|
119
120
|
|
120
121
|
expect(rest_client).to have_received(:get).once.with(:sendsms, some_callback_args)
|
121
122
|
end
|
@@ -143,23 +144,25 @@ describe LocaSMS::Client do # rubocop:disable RSpec/FilePath
|
|
143
144
|
end
|
144
145
|
|
145
146
|
context 'when receive all campaign based methods' do
|
146
|
-
|
147
|
-
rest_method = {
|
148
|
-
campaign_status: :getstatus,
|
149
|
-
campaign_hold: :holdsms,
|
150
|
-
campaign_release: :releasesms
|
151
|
-
}[method]
|
147
|
+
before { allow(rest_client).to receive(:get).and_return({}) }
|
152
148
|
|
153
|
-
|
149
|
+
it '#campaign_status' do
|
150
|
+
client.campaign_status '12345'
|
151
|
+
|
152
|
+
expect(rest_client).to have_received(:get).once.with(:getstatus, id: '12345')
|
153
|
+
end
|
154
154
|
|
155
|
-
|
155
|
+
it '#campaign_hold' do
|
156
|
+
client.campaign_hold '12345'
|
156
157
|
|
157
|
-
expect(rest_client).to have_received(:get).once.with(
|
158
|
+
expect(rest_client).to have_received(:get).once.with(:holdsms, id: '12345')
|
158
159
|
end
|
159
160
|
|
160
|
-
it
|
161
|
-
|
162
|
-
|
161
|
+
it '#campaign_release' do
|
162
|
+
client.campaign_release '12345'
|
163
|
+
|
164
|
+
expect(rest_client).to have_received(:get).once.with(:releasesms, id: '12345')
|
165
|
+
end
|
163
166
|
|
164
167
|
it 'has tests to cover campaign_status csv result'
|
165
168
|
end
|
@@ -6,16 +6,33 @@ describe LocaSMS::Helpers::DateTimeHelper do # rubocop:disable RSpec/FilePath
|
|
6
6
|
subject(:helper) { described_class }
|
7
7
|
|
8
8
|
describe '.parse' do
|
9
|
+
subject { described_class.parse(value) }
|
10
|
+
|
9
11
|
let(:expected) { Time.parse '1977-03-14 14:12:00' }
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
context 'when is a date time' do
|
14
|
+
let(:value) { DateTime.parse '1977-03-14 14:12:00' }
|
15
|
+
|
16
|
+
it { is_expected.to eq expected }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when is a time' do
|
20
|
+
let(:value) { Time.parse '1977-03-14 14:12:00' }
|
21
|
+
|
22
|
+
it { is_expected.to eq expected }
|
13
23
|
end
|
14
24
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
25
|
+
context 'when is a string' do
|
26
|
+
let(:value) { '1977-03-14 14:12:00' }
|
27
|
+
|
28
|
+
it { is_expected.to eq expected }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when is a number' do
|
32
|
+
let(:value) { 227_196_720 }
|
33
|
+
|
34
|
+
it { is_expected.to eq expected }
|
35
|
+
end
|
19
36
|
end
|
20
37
|
|
21
38
|
describe '.split' do
|
@@ -26,7 +26,7 @@ describe LocaSMS::RestClient do # rubocop:disable RSpec/FilePath
|
|
26
26
|
it 'performs get request to url with parameters' do
|
27
27
|
allow(Net::HTTP)
|
28
28
|
.to receive(:get_response)
|
29
|
-
.and_return(
|
29
|
+
.and_return(instance_double(Net::HTTPOK, body: body))
|
30
30
|
|
31
31
|
rest_client.get(action, params)
|
32
32
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locasms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adilson Carvalho
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-10-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: multi_json
|
@@ -60,14 +60,14 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '3.
|
63
|
+
version: '3.11'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '3.
|
70
|
+
version: '3.11'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: timecop
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,75 +83,89 @@ dependencies:
|
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0.9'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
86
|
+
name: yard
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
91
|
+
version: '0.9'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: '
|
98
|
+
version: '0.9'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
|
-
name:
|
100
|
+
name: simplecov
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: '0.
|
105
|
+
version: '0.21'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: '0.
|
112
|
+
version: '0.21'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
114
|
+
name: rubocop
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: '
|
119
|
+
version: '1.36'
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
124
|
- - "~>"
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: '
|
126
|
+
version: '1.36'
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
|
-
name: rubocop
|
128
|
+
name: rubocop-performance
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '1.15'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '1.15'
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: rubocop-rake
|
129
143
|
requirement: !ruby/object:Gem::Requirement
|
130
144
|
requirements:
|
131
145
|
- - "~>"
|
132
146
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0.
|
147
|
+
version: '0.6'
|
134
148
|
type: :development
|
135
149
|
prerelease: false
|
136
150
|
version_requirements: !ruby/object:Gem::Requirement
|
137
151
|
requirements:
|
138
152
|
- - "~>"
|
139
153
|
- !ruby/object:Gem::Version
|
140
|
-
version: '0.
|
154
|
+
version: '0.6'
|
141
155
|
- !ruby/object:Gem::Dependency
|
142
156
|
name: rubocop-rspec
|
143
157
|
requirement: !ruby/object:Gem::Requirement
|
144
158
|
requirements:
|
145
159
|
- - "~>"
|
146
160
|
- !ruby/object:Gem::Version
|
147
|
-
version: '
|
161
|
+
version: '2.13'
|
148
162
|
type: :development
|
149
163
|
prerelease: false
|
150
164
|
version_requirements: !ruby/object:Gem::Requirement
|
151
165
|
requirements:
|
152
166
|
- - "~>"
|
153
167
|
- !ruby/object:Gem::Version
|
154
|
-
version: '
|
168
|
+
version: '2.13'
|
155
169
|
description: |-
|
156
170
|
Cliente para o serviço de disparo de SMS da LocaSMS e de sua
|
157
171
|
versão para Short Code SMS (SMS Plataforma)
|
@@ -164,10 +178,10 @@ executables:
|
|
164
178
|
extensions: []
|
165
179
|
extra_rdoc_files: []
|
166
180
|
files:
|
181
|
+
- ".github/workflows/test.yml"
|
167
182
|
- ".gitignore"
|
168
183
|
- ".rubocop.yml"
|
169
184
|
- ".rubocop_todo.yml"
|
170
|
-
- ".travis.yml"
|
171
185
|
- ".yardopts"
|
172
186
|
- Gemfile
|
173
187
|
- Guardfile
|
@@ -192,31 +206,26 @@ files:
|
|
192
206
|
homepage: https://github.com/mcorp/locasms
|
193
207
|
licenses:
|
194
208
|
- MIT
|
195
|
-
metadata:
|
209
|
+
metadata:
|
210
|
+
rubygems_mfa_required: 'true'
|
196
211
|
post_install_message:
|
197
212
|
rdoc_options: []
|
198
213
|
require_paths:
|
199
214
|
- lib
|
200
215
|
required_ruby_version: !ruby/object:Gem::Requirement
|
201
216
|
requirements:
|
202
|
-
- - "
|
217
|
+
- - ">="
|
203
218
|
- !ruby/object:Gem::Version
|
204
|
-
version: '2.
|
219
|
+
version: '2.6'
|
205
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
221
|
requirements:
|
207
222
|
- - ">="
|
208
223
|
- !ruby/object:Gem::Version
|
209
224
|
version: '0'
|
210
225
|
requirements: []
|
211
|
-
rubygems_version: 3.
|
226
|
+
rubygems_version: 3.3.7
|
212
227
|
signing_key:
|
213
228
|
specification_version: 4
|
214
229
|
summary: Cliente para disparo de SMS, regular e Short Code, através da LocaSMS/SMS
|
215
230
|
Plataforma
|
216
|
-
test_files:
|
217
|
-
- spec/lib/locasms/client_spec.rb
|
218
|
-
- spec/lib/locasms/helpers/date_time_helper_spec.rb
|
219
|
-
- spec/lib/locasms/numbers_spec.rb
|
220
|
-
- spec/lib/locasms/rest_client_spec.rb
|
221
|
-
- spec/spec.opts
|
222
|
-
- spec/spec_helper.rb
|
231
|
+
test_files: []
|
data/.travis.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 2.7
|
4
|
-
- 2.6
|
5
|
-
- 2.5
|
6
|
-
- 2.4
|
7
|
-
env:
|
8
|
-
- TRAVIS=true
|
9
|
-
before_script:
|
10
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
11
|
-
- chmod +x ./cc-test-reporter
|
12
|
-
- ./cc-test-reporter before-build
|
13
|
-
script:
|
14
|
-
- bundle exec rspec
|
15
|
-
- bundle exec rubocop
|
16
|
-
after_script:
|
17
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|