sms_aero 0.1.1 → 0.1.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 +4 -4
- data/.rubocop.yml +6 -3
- data/CHANGELOG.md +6 -0
- data/README.md +11 -0
- data/lib/sms_aero/birthday.rb +1 -1
- data/lib/sms_aero/future.rb +1 -1
- data/lib/sms_aero/hlr_status.rb +11 -0
- data/lib/sms_aero/response/with_hlr.rb +5 -0
- data/lib/sms_aero/response.rb +3 -2
- data/lib/sms_aero.rb +21 -2
- data/sms_aero.gemspec +2 -2
- data/spec/operations/hlr_spec.rb +86 -0
- metadata +24 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee41b1be5aeaa61ce83c74ca4e3605d45f981c4e
|
4
|
+
data.tar.gz: bfd499ee848d4ed0848c80d5bd0920055518c9d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bb5adc819ed5576a3df4de08db3e9f72376c1446dfa53b6eb70fc5f14bf1363cf4a23043670d185511a9e997c01638f97fd4a2f1f94e28c8c8fb0711ad279d9
|
7
|
+
data.tar.gz: e72f8ea396e6c79fcead9a9232081976a67e38f579db861cb0e9a59fe62ee53746dc13e812acabaea196344e195d17b82af2f13369f730e12c7c2d9c2969b95b
|
data/.rubocop.yml
CHANGED
@@ -12,6 +12,9 @@ Metrics/LineLength:
|
|
12
12
|
- http
|
13
13
|
- https
|
14
14
|
|
15
|
+
Layout/SpaceInLambdaLiteral:
|
16
|
+
Enabled: false
|
17
|
+
|
15
18
|
Style/Lambda:
|
16
19
|
Enabled: false
|
17
20
|
|
@@ -21,13 +24,13 @@ Style/StringLiterals:
|
|
21
24
|
Style/FrozenStringLiteralComment:
|
22
25
|
Enabled: false
|
23
26
|
|
24
|
-
Style/
|
27
|
+
Style/DateTime:
|
25
28
|
Enabled: false
|
26
29
|
|
27
|
-
Style/
|
30
|
+
Style/Documentation:
|
28
31
|
Enabled: false
|
29
32
|
|
30
|
-
Style/
|
33
|
+
Style/ClassAndModuleChildren:
|
31
34
|
Enabled: false
|
32
35
|
|
33
36
|
Style/PercentLiteralDelimiters:
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
7
|
|
8
|
+
## [0.1.2] - [2017-12-03]
|
9
|
+
|
10
|
+
### Added
|
11
|
+
- checking existance & availability of phone number using methods `#hlr` and `#hlr_status id` (@Earendil95)
|
12
|
+
|
8
13
|
## [0.1.1] - [2017-09-02]
|
9
14
|
|
10
15
|
### Changed
|
@@ -43,3 +48,4 @@ Some changes in the interface has been made as well.
|
|
43
48
|
[0.0.9]: https://github.com/nepalez/sms_aero/compare/v0.0.8...v0.0.9
|
44
49
|
[0.1.0]: https://github.com/nepalez/sms_aero/compare/v0.0.9...v0.1.0
|
45
50
|
[0.1.1]: https://github.com/nepalez/sms_aero/compare/v0.1.0...v0.1.1
|
51
|
+
[0.1.2]: https://github.com/nepalez/sms_aero/compare/v0.1.0...v0.1.2
|
data/README.md
CHANGED
@@ -123,6 +123,17 @@ answer = client.delete_phone phone: "+7 (999) 123-4567",
|
|
123
123
|
answer.result # => "accepted"
|
124
124
|
```
|
125
125
|
|
126
|
+
```ruby
|
127
|
+
# checking existance & availability of phone number
|
128
|
+
answer = client.hlr phone: "+7 (999) 123-4567"
|
129
|
+
answer.result # => "accepted"
|
130
|
+
id = answer.id # => "12345", id of request
|
131
|
+
|
132
|
+
answer = client.hlr_status id
|
133
|
+
answer.result # => "accepted"
|
134
|
+
answer.status # => any of :available, :unavailable or :nonexistent
|
135
|
+
```
|
136
|
+
|
126
137
|
[sms-aero]: https://smsaero.ru/api/description/
|
127
138
|
[codeclimate-badger]: https://img.shields.io/codeclimate/github/nepalez/sms_aero.svg?style=flat
|
128
139
|
[codeclimate]: https://codeclimate.com/github/nepalez/sms_aero
|
data/lib/sms_aero/birthday.rb
CHANGED
data/lib/sms_aero/future.rb
CHANGED
data/lib/sms_aero/response.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class SmsAero::Response
|
2
2
|
extend Dry::Initializer
|
3
3
|
extend SmsAero::Optional
|
4
|
-
option :reason, proc(&:to_s),
|
5
|
-
option :result, proc(&:strip),
|
4
|
+
option :reason, proc(&:to_s), default: proc { nil }
|
5
|
+
option :result, proc(&:strip), default: -> { "accepted" }
|
6
6
|
|
7
7
|
def success?
|
8
8
|
result == "accepted"
|
@@ -27,4 +27,5 @@ class SmsAero::Response
|
|
27
27
|
require_relative "response/with_senders"
|
28
28
|
require_relative "response/with_statuses"
|
29
29
|
require_relative "response/with_tariff"
|
30
|
+
require_relative "response/with_hlr"
|
30
31
|
end
|
data/lib/sms_aero.rb
CHANGED
@@ -14,6 +14,7 @@ class SmsAero < Evil::Client
|
|
14
14
|
require_relative "sms_aero/group"
|
15
15
|
require_relative "sms_aero/channel"
|
16
16
|
require_relative "sms_aero/tariff"
|
17
|
+
require_relative "sms_aero/hlr_status"
|
17
18
|
require_relative "sms_aero/response"
|
18
19
|
|
19
20
|
option :user, FilledString
|
@@ -113,7 +114,7 @@ class SmsAero < Evil::Client
|
|
113
114
|
option :group, FilledString
|
114
115
|
|
115
116
|
path "delgroup"
|
116
|
-
query {
|
117
|
+
query { { group: group } }
|
117
118
|
end
|
118
119
|
|
119
120
|
operation :delete_phone do
|
@@ -121,7 +122,7 @@ class SmsAero < Evil::Client
|
|
121
122
|
option :group, FilledString, optional: true
|
122
123
|
|
123
124
|
path "delphone"
|
124
|
-
query { options.
|
125
|
+
query { options.slice(:phone, :group) }
|
125
126
|
end
|
126
127
|
|
127
128
|
operation :send_sms do
|
@@ -140,4 +141,22 @@ class SmsAero < Evil::Client
|
|
140
141
|
|
141
142
|
response(200) { |*res| Response::WithId.build(*res) }
|
142
143
|
end
|
144
|
+
|
145
|
+
operation :hlr do
|
146
|
+
option :phone, Phone
|
147
|
+
|
148
|
+
path "hlr"
|
149
|
+
query { { phone: phone } }
|
150
|
+
|
151
|
+
response(200) { |*res| Response::WithId.build(*res) }
|
152
|
+
end
|
153
|
+
|
154
|
+
operation :hlr_status do
|
155
|
+
option :id, FilledString
|
156
|
+
|
157
|
+
path "hlrStatus"
|
158
|
+
query { { id: id } }
|
159
|
+
|
160
|
+
response(200) { |*res| Response::WithHlr.build(*res) }
|
161
|
+
end
|
143
162
|
end
|
data/sms_aero.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = "sms_aero"
|
3
|
-
gem.version = "0.1.
|
3
|
+
gem.version = "0.1.2"
|
4
4
|
gem.author = "Andrew Kozin (nepalez)"
|
5
5
|
gem.email = "andrew.kozin@gmail.com"
|
6
6
|
gem.homepage = "https://github.com/nepalez/sms_aero"
|
@@ -17,6 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_development_dependency "rake", ">= 10"
|
19
19
|
gem.add_development_dependency "rspec", "~> 3.0"
|
20
|
-
gem.add_development_dependency "rubocop", "~> 0.
|
20
|
+
gem.add_development_dependency "rubocop", "~> 0.48"
|
21
21
|
gem.add_development_dependency "webmock", "~> 2.1"
|
22
22
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
describe SmsAero do
|
2
|
+
let(:settings) { { user: "LOGIN", password: "PASSWORD" } }
|
3
|
+
let(:client) { described_class.new(settings) }
|
4
|
+
|
5
|
+
before { stub_request(:any, //).to_return(body: answer.to_json) }
|
6
|
+
|
7
|
+
describe "#hlr" do
|
8
|
+
let(:params) { { phone: "+7(002)034-5678" } }
|
9
|
+
let(:answer) { { result: "accepted", id: 123 } }
|
10
|
+
let(:url) do
|
11
|
+
"https://gate.smsaero.ru/hlr?answer=json&user=LOGIN&" \
|
12
|
+
"password=319f4d26e3c536b5dd871bb2c52e3178&phone=70020345678"
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { client.hlr params }
|
16
|
+
|
17
|
+
it "sends a request" do
|
18
|
+
subject
|
19
|
+
expect(a_request(:post, url)).to have_been_made
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns success" do
|
23
|
+
expect(subject.result).to eq "accepted"
|
24
|
+
expect(subject.id).to eq "123"
|
25
|
+
end
|
26
|
+
|
27
|
+
context "with invalid phone" do
|
28
|
+
let(:params) { { phone: "123" } }
|
29
|
+
|
30
|
+
it "raises an exception" do
|
31
|
+
expect { subject }.to raise_error(Evil::Client::ValidationError, /123/)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "without a phone" do
|
36
|
+
let(:params) { {} }
|
37
|
+
|
38
|
+
it "raises an exception" do
|
39
|
+
expect { subject }.to raise_error(ArgumentError)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#hlr_status" do
|
45
|
+
let(:params) { { id: 1 } }
|
46
|
+
let(:status) { 1 }
|
47
|
+
let(:answer) { { result: "accepted", status: status } }
|
48
|
+
let(:url) do
|
49
|
+
"https://gate.smsaero.ru/hlrStatus?answer=json&user=LOGIN&" \
|
50
|
+
"password=319f4d26e3c536b5dd871bb2c52e3178&id=1"
|
51
|
+
end
|
52
|
+
|
53
|
+
subject { client.hlr_status params }
|
54
|
+
|
55
|
+
it "sends a request" do
|
56
|
+
subject
|
57
|
+
expect(a_request(:post, url)).to have_been_made
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns success" do
|
61
|
+
expect(subject.result).to eq "accepted"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "converts status to sym" do
|
65
|
+
expect(subject.status).to eq :available
|
66
|
+
end
|
67
|
+
|
68
|
+
context "other statuses" do
|
69
|
+
context "unavailable" do
|
70
|
+
let(:status) { 2 }
|
71
|
+
|
72
|
+
it "converts status to sym" do
|
73
|
+
expect(subject.status).to eq :unavailable
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "nonexistent" do
|
78
|
+
let(:status) { 3 }
|
79
|
+
|
80
|
+
it "converts status to sym" do
|
81
|
+
expect(subject.status).to eq :nonexistent
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
metadata
CHANGED
@@ -1,86 +1,86 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sms_aero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin (nepalez)
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: evil-client
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '2.0'
|
19
|
-
name: evil-client
|
20
|
-
prerelease: false
|
21
20
|
type: :runtime
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '10'
|
33
|
-
name: rake
|
34
|
-
prerelease: false
|
35
34
|
type: :development
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '3.0'
|
47
|
-
name: rspec
|
48
|
-
prerelease: false
|
49
48
|
type: :development
|
49
|
+
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - "~>"
|
59
60
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0.
|
61
|
-
name: rubocop
|
62
|
-
prerelease: false
|
61
|
+
version: '0.48'
|
63
62
|
type: :development
|
63
|
+
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
68
|
+
version: '0.48'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
73
|
- - "~>"
|
73
74
|
- !ruby/object:Gem::Version
|
74
75
|
version: '2.1'
|
75
|
-
name: webmock
|
76
|
-
prerelease: false
|
77
76
|
type: :development
|
77
|
+
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.1'
|
83
|
-
description:
|
83
|
+
description:
|
84
84
|
email: andrew.kozin@gmail.com
|
85
85
|
executables: []
|
86
86
|
extensions: []
|
@@ -107,11 +107,13 @@ files:
|
|
107
107
|
- lib/sms_aero/filled_string.rb
|
108
108
|
- lib/sms_aero/future.rb
|
109
109
|
- lib/sms_aero/group.rb
|
110
|
+
- lib/sms_aero/hlr_status.rb
|
110
111
|
- lib/sms_aero/optional.rb
|
111
112
|
- lib/sms_aero/phone.rb
|
112
113
|
- lib/sms_aero/response.rb
|
113
114
|
- lib/sms_aero/response/with_balance.rb
|
114
115
|
- lib/sms_aero/response/with_groups.rb
|
116
|
+
- lib/sms_aero/response/with_hlr.rb
|
115
117
|
- lib/sms_aero/response/with_id.rb
|
116
118
|
- lib/sms_aero/response/with_senders.rb
|
117
119
|
- lib/sms_aero/response/with_statuses.rb
|
@@ -135,13 +137,14 @@ files:
|
|
135
137
|
- spec/operations/check_tariff_spec.rb
|
136
138
|
- spec/operations/delete_group_spec.rb
|
137
139
|
- spec/operations/delete_phone_spec.rb
|
140
|
+
- spec/operations/hlr_spec.rb
|
138
141
|
- spec/operations/send_sms_spec.rb
|
139
142
|
- spec/spec_helper.rb
|
140
143
|
homepage: https://github.com/nepalez/sms_aero
|
141
144
|
licenses:
|
142
145
|
- MIT
|
143
146
|
metadata: {}
|
144
|
-
post_install_message:
|
147
|
+
post_install_message:
|
145
148
|
rdoc_options: []
|
146
149
|
require_paths:
|
147
150
|
- lib
|
@@ -156,9 +159,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
159
|
- !ruby/object:Gem::Version
|
157
160
|
version: '0'
|
158
161
|
requirements: []
|
159
|
-
rubyforge_project:
|
160
|
-
rubygems_version: 2.6.
|
161
|
-
signing_key:
|
162
|
+
rubyforge_project:
|
163
|
+
rubygems_version: 2.6.14
|
164
|
+
signing_key:
|
162
165
|
specification_version: 4
|
163
166
|
summary: HTTP(s) client to SMS Aero API
|
164
167
|
test_files:
|
@@ -179,5 +182,6 @@ test_files:
|
|
179
182
|
- spec/operations/check_tariff_spec.rb
|
180
183
|
- spec/operations/delete_group_spec.rb
|
181
184
|
- spec/operations/delete_phone_spec.rb
|
185
|
+
- spec/operations/hlr_spec.rb
|
182
186
|
- spec/operations/send_sms_spec.rb
|
183
187
|
- spec/spec_helper.rb
|