locasms 0.5.0 → 1.1.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: 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