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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39596e51a28908193ac0455bf97fb1c703becaedc33c569fe509e1ce450a6e70
4
- data.tar.gz: f4a5d880167d667f952ebd75f68116b4dcfda9da03579d9a2b4bca87f735b1ac
3
+ metadata.gz: c77f667632cbccd85f567f099b9bcef15815dcae6ad9726ef243ed632e983529
4
+ data.tar.gz: b20250459c3bcbff6777655dc0e03a5f109b40129bff4ff4291683dba55895b4
5
5
  SHA512:
6
- metadata.gz: '028885bb02e34a3f5bb918e805795e24e62a1f7d9bd18acc81bafb53e824502b263128b159c75af90d06d5764b210cd0fc01968d865cfed31a89bf1041fbdbd6'
7
- data.tar.gz: 56ca283b83035314141fadcf0b48cedbf875176822c5ca159c99c7a70857260cfe9c3a8284f0ddcd8fe9b147edd4f4a3f91542df4107c683a1f1d2e1a87f3422
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
@@ -1,6 +1,10 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
- require: rubocop-rspec
3
+ require:
4
+ - rubocop-performance
5
+ - rubocop-rake
6
+ - rubocop-rspec
4
7
 
5
8
  AllCops:
9
+ TargetRubyVersion: 2.6
6
10
  NewCops: enable
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
- [![Gem Version](https://badge.fury.io/rb/locasms.svg)](http://badge.fury.io/rb/locasms) [![Build Status](https://travis-ci.org/mcorp/locasms.png?branch=master)](https://travis-ci.org/mcorp/locasms) [![Code Climate](https://api.codeclimate.com/v1/badges/4187ea939aabd3b66bf7/maintainability)](https://codeclimate.com/github/mcorp/locasms) [![CC Coverage](https://api.codeclimate.com/v1/badges/4187ea939aabd3b66bf7/test_coverage)](https://codeclimate.com/github/mcorp/locasms/test_coverage) [![Inline docs](http://inch-ci.org/github/mcorp/locasms.svg?branch=master)](http://inch-ci.org/github/mcorp/locasms)
2
+ [![Gem Version](https://badge.fury.io/rb/locasms.svg)](http://badge.fury.io/rb/locasms) [![Code Climate](https://api.codeclimate.com/v1/badges/4187ea939aabd3b66bf7/maintainability)](https://codeclimate.com/github/mcorp/locasms) [![CC Coverage](https://api.codeclimate.com/v1/badges/4187ea939aabd3b66bf7/test_coverage)](https://codeclimate.com/github/mcorp/locasms/test_coverage) [![Inline docs](http://inch-ci.org/github/mcorp/locasms.svg?branch=master)](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
 
@@ -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(response['data'] || '', col_sep: ';', quote_char: '"').map do |delivery_id, _, enqueue_time, _, delivery_time, _, status, _, _, carrier, mobile_number, _, message|
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
- delivery_id: delivery_id,
91
- enqueue_time: enqueue_time,
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
@@ -36,7 +36,7 @@ module LocaSMS
36
36
  # # => ['14/03/1977', '14:12']
37
37
  #
38
38
  def self.split(date)
39
- parse(date).strftime('%d/%m/%Y %H:%M').split(' ')
39
+ parse(date).strftime('%d/%m/%Y %H:%M').split
40
40
  end
41
41
  end
42
42
  end
@@ -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 =~ /^0:OPERACAO INVALIDA$/i
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'] =~ /^falha ao realizar login$/i
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LocaSMS
4
- VERSION = '0.5.0'
4
+ VERSION = '1.1.0'
5
5
  end
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 = '~> 2.4'
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.9'
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.18'
38
+ spec.add_development_dependency 'simplecov', '~> 0.21'
40
39
 
41
40
  # for code quality
42
- spec.add_development_dependency 'rubocop', '~> 0.93'
43
- spec.add_development_dependency 'rubocop-rspec', '~> 1.43'
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 'RestClient' }
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', url_callback: 'something'
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
- def check_for(method)
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
- allow(rest_client).to receive(:get).and_return({})
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
- client.send method, '12345'
155
+ it '#campaign_hold' do
156
+ client.campaign_hold '12345'
156
157
 
157
- expect(rest_client).to have_received(:get).once.with(rest_method, id: '12345')
158
+ expect(rest_client).to have_received(:get).once.with(:holdsms, id: '12345')
158
159
  end
159
160
 
160
- it { check_for :campaign_status }
161
- it { check_for :campaign_hold }
162
- it { check_for :campaign_release }
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
- def try_for(value)
12
- helper.parse(value) == expected
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
- it { try_for DateTime.parse('1977-03-14 14:12:00') }
16
- it { try_for Time.parse('1977-03-14 14:12:00') }
17
- it { try_for '1977-03-14 14:12:00' }
18
- it { try_for 227_207_520 }
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(OpenStruct.new(body: body))
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: 0.5.0
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: 2020-10-29 00:00:00.000000000 Z
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.9'
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.9'
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: redcarpet
86
+ name: yard
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: '3.5'
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: '3.5'
98
+ version: '0.9'
99
99
  - !ruby/object:Gem::Dependency
100
- name: yard
100
+ name: simplecov
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: '0.9'
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.9'
112
+ version: '0.21'
113
113
  - !ruby/object:Gem::Dependency
114
- name: simplecov
114
+ name: rubocop
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - "~>"
118
118
  - !ruby/object:Gem::Version
119
- version: '0.18'
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: '0.18'
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.93'
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.93'
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: '1.43'
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: '1.43'
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.4'
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.0.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