sms-pilot-api-v1 0.0.3 → 0.0.4

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: 1c7152ee4bb497bc839d159e8cdc7bb9b9b5735179a8c5ced0176924acd53727
4
- data.tar.gz: 9dfa498a10e6b68c6115ed42ff4a6b678a18b4b31ad2532f1092095d9efe9a60
3
+ metadata.gz: e1438f40054c6f5347c861fddb4530b2f86f7321ef4998eba159c18e70db520c
4
+ data.tar.gz: fccbb5e7fb2c505e5a8bd80cc9e1410db5673b71aa2ac6ffac0bf41a89610797
5
5
  SHA512:
6
- metadata.gz: fb942ccb1bfab86c399c1c0567885d8ca0b43ca54f3e832d6316d6ad2838beb7d1ade363f537247aff90aa8090886a78f2ac0187c9e82c077ade0944bb4e5497
7
- data.tar.gz: 6ca91958e3d50371b7a48c7679b6a6285f6ff9d8389e2e2a0605e02f6eea85359e2b873366351d762fe48bad1bf288c3f9d94244fa8c0ac5a09a1c85230ae5de
6
+ metadata.gz: 86070669bff561d19b18242c595acc0bfc22ea6607bead4456e74391671e143ee6f1e269b1d4cd989d751d3ffda4c68fd85144d331a7e0499a64d7c114e344be
7
+ data.tar.gz: '028935012e1fd06b533aa264d8d46f0eb87ee245fc08fe5bad688c89ceb2db77610ae75caea32a3193145d0d442f4f2d32f31e1b218a6951ef78e49c6b40e558'
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
+ .DS_Storage
2
+ .rspec_status
1
3
  /.bundle/
2
4
  /.yardoc
3
5
  /_yardoc/
@@ -6,6 +8,3 @@
6
8
  /pkg/
7
9
  /spec/reports/
8
10
  /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
data/.yardopts ADDED
@@ -0,0 +1,8 @@
1
+ --private
2
+ --protected
3
+ -m markdown
4
+ -M redcarpet
5
+ -
6
+ lib/**/*.rb
7
+ CHANGELOG.md
8
+ README.md
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
- ## [Unreleased]
1
+ # Changelog
2
2
 
3
- ## [0.1.0] - 2021-05-06
3
+ ## [0.0.4] - 2021-05-09
4
+
5
+ - Drop dependence on HTTP.rb gem
6
+ - Corrects what `#send_sms` returns (could return String errors instead of Booleans)
7
+ - Adds extensive [documentation](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot/Client) via YARD & RubyDoc
8
+
9
+ ## [0.0.3] - 2021-05-06
4
10
 
5
11
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,32 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sms-pilot-api-v1 (0.1.0)
5
- http (>= 4.4)
4
+ sms-pilot-api-v1 (0.0.3)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- addressable (2.7.0)
11
- public_suffix (>= 2.0.2, < 5.0)
12
9
  diff-lcs (1.4.4)
13
- domain_name (0.5.20190701)
14
- unf (>= 0.0.5, < 1.0.0)
15
- ffi (1.15.0)
16
- ffi-compiler (1.0.1)
17
- ffi (>= 1.0.0)
18
- rake
19
- http (4.4.1)
20
- addressable (~> 2.3)
21
- http-cookie (~> 1.0)
22
- http-form_data (~> 2.2)
23
- http-parser (~> 1.2.0)
24
- http-cookie (1.0.3)
25
- domain_name (~> 0.5)
26
- http-form_data (2.3.0)
27
- http-parser (1.2.3)
28
- ffi-compiler (>= 1.0, < 2.0)
29
- public_suffix (4.0.6)
30
10
  rake (13.0.3)
31
11
  rspec (3.10.0)
32
12
  rspec-core (~> 3.10.0)
@@ -41,9 +21,6 @@ GEM
41
21
  diff-lcs (>= 1.2.0, < 2.0)
42
22
  rspec-support (~> 3.10.0)
43
23
  rspec-support (3.10.2)
44
- unf (0.1.4)
45
- unf_ext
46
- unf_ext (0.0.7.7)
47
24
 
48
25
  PLATFORMS
49
26
  x86_64-darwin-17
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # SmsPilot API v1 client
2
2
 
3
- Обёртка отправки GET-запроса на API endpoint сервиса SMS Pilot (API v1) для удобства доступа к ошибкам, статусам, цене SMS и т. п.
3
+ [![Gem Version](https://badge.fury.io/rb/sms-pilot-api-v1.svg)](https://badge.fury.io/rb/sms-pilot-api-v1)
4
+
5
+ Simple wrapper around SMS pilot API v1. Version 1 because it returns more data within its standard response.
4
6
 
5
7
  ## Installation
6
8
 
@@ -28,6 +30,8 @@ bin/console
28
30
  ### Initialize
29
31
 
30
32
  ```ruby
33
+ require "sms_pilot"
34
+
31
35
  client = SmsPilot::Client.new(api_key: "XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ")
32
36
  #<SmsPilot::Client:0x00007fb1c602d490 @api_key="XXXXX...", @error=nil, @response_status=nil, @response_headers=nil, @response_body=nil, @response_data={}, @url=nil>
33
37
  ```
@@ -42,7 +46,7 @@ client.phone # => nil
42
46
  client.rejected? # => false
43
47
  client.response_body # => nil
44
48
  client.response_data # => {}
45
- client.response_headers # => nil
49
+ client.response_headers # => {}
46
50
  client.response_status # => nil
47
51
  client.sender_blocked? # => false
48
52
  client.sms_cost # => nil
@@ -140,10 +144,11 @@ SMS sent:
140
144
 
141
145
  ```json
142
146
  {
147
+ "balance": "11908.50",
148
+ "cost": "1.68",
143
149
  "send": [
144
150
  { "server_id": "10000", "phone": "79021234567", "price": "1.68", "status": "0" }
145
- ],
146
- "balance": "11908.50", "cost": "1.68"
151
+ ]
147
152
  }
148
153
  ```
149
154
 
@@ -1,14 +1,87 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "http"
3
+ require "json"
4
+ require "net/https"
4
5
  require "uri"
5
6
 
6
7
  module SmsPilot
7
8
 
8
- API_ENDPOINT = "https://smspilot.ru/api.php".freeze
9
-
9
+ # @!attribute [r] api_key
10
+ # @return [String] Your API key.
11
+ #
12
+ # @!attribute [r] error
13
+ # Error message returned from the API, combined with the error code
14
+ # @example
15
+ # client.error #=> "Пользователь временно блокирован (спорная ситуация) (error code: 122)"
16
+ # @return [nil, String]
17
+ # @see #error_code
18
+ # @see #error_description
19
+ #
20
+ # @!attribute [r] response_body
21
+ # Response format is JSON (because we request it that way in {#build_uri}.
22
+ # @example
23
+ # "{\"send\":[{\"server_id\":\"10000\",\"phone\":\"79021234567\",\"price\":\"1.68\",\"status\":\"0\"}],\"balance\":\"20006.97\",\"cost\":\"1.68\"}"
24
+ # @return [nil, String] Unmodified HTTP resonse body that API returned
25
+ # @see #response_data
26
+ # @see #response_headers
27
+ # @see #response_status
28
+ #
29
+ # @!attribute [r] response_data
30
+ # Parsed <tt>@response_body</tt>. May be an empty <tt>Hash</tt> if parsing fails.
31
+ # @example
32
+ # {
33
+ # "balance" => "20006.97",
34
+ # "cost" => "1.68",
35
+ # "send" => [
36
+ # {
37
+ # "phone" => "79021234567",
38
+ # "price" => "1.68",
39
+ # "server_id" => "10000",
40
+ # "status" => "0"
41
+ # }
42
+ # ]
43
+ # }
44
+ # @return [Hash]
45
+ # @see #response_body
46
+ # @see #response_headers
47
+ # @see #response_status
48
+ #
49
+ # @!attribute [r] response_headers
50
+ # @example
51
+ # {
52
+ # "Access-Control-Allow-Origin" => "*",
53
+ # "Connection" => "close",
54
+ # "Content-Length" => "179",
55
+ # "Content-Type" => "application/json; charset=utf-8",
56
+ # "Date" => "Thu, 06 May 2021 04:52:58 GMT",
57
+ # "Server" => "nginx"
58
+ # }
59
+ # @return [nil, String] Unmodified HTTP resonse headers that API returned.
60
+ # @see #response_body
61
+ # @see #response_data
62
+ # @see #response_status
63
+ #
64
+ # @!attribute [r] response_status
65
+ # HTTP status of the request to the API. 200 in case of success.
66
+ # @example
67
+ # client.response_status #=> 200
68
+ #
69
+ # @return [nil, Integer]
70
+ # @see #response_body
71
+ # @see #response_data
72
+ # @see #response_headers
73
+ #
74
+ # @!attribute [r] url
75
+ # @example
76
+ # client.url #=> "https://smspilot.ru/api.php?api_key=XXX&format=json&send=TEXT&to=79021234567"
77
+ # @return [String] URL generated by combining <tt>API_ENDPOINT</tt>, your API key, SMS text & phone
78
+ #
10
79
  class Client
11
80
 
81
+ # Check current API endpoint URL at {https://smspilot.ru/apikey.php#api1}
82
+ #
83
+ API_ENDPOINT = "https://smspilot.ru/api.php".freeze
84
+
12
85
  attr_reader :api_key
13
86
  attr_reader :error
14
87
  attr_reader :phone
@@ -19,128 +92,272 @@ module SmsPilot
19
92
  attr_reader :url
20
93
 
21
94
 
95
+ # @param api_key [String]
96
+ # @return [SmsPilot::Client]
97
+ # @raise [SmsPilot::InvalidAPIkeyError] if you pass anything but a non-empty String
98
+ # @see https://smspilot.ru/my-settings.php Get your production API key here
99
+ # @see https://smspilot.ru/apikey.php Get your development API key here
100
+ # @note Current development API key is <tt>"XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ"</tt>
101
+ #
102
+ # @example
103
+ # client = SmsPilot::Client.new(api_key: ENV["SMS_PILOT_API_KEY"])
104
+ #
22
105
  def initialize(api_key:)
23
- fail TypeError, "API key must be a String, you pass a #{api_key.class} (#{api_key})" unless api_key.is_a? String
24
- fail TypeError, "API key cannot be empty" if api_key == ""
106
+ fail SmsPilot::InvalidAPIkeyError, "API key must be a String, you pass a #{api_key.class} (#{api_key})" unless api_key.is_a? String
107
+ fail SmsPilot::InvalidAPIkeyError, "API key cannot be empty" if api_key == ""
25
108
 
26
109
  @api_key = api_key
27
110
  @error = nil
28
111
  @response_status = nil
29
- @response_headers = nil
112
+ @response_headers = {}
30
113
  @response_body = nil
31
114
  @response_data = {}
32
115
  @url = nil
33
116
  end
34
117
 
35
- def send_sms(phone, text)
36
- fail TypeError, "`phone` must be a String, you pass a #{phone.class} (#{phone})" unless phone.is_a? String
37
- fail TypeError, "`text` must be a String, you pass a #{ text.class} (#{ text})" unless text.is_a? String
38
- fail ArgumentError, "`phone` cannot be empty" if phone == ""
39
- fail ArgumentError, "`text` cannot be empty" if text == ""
40
- fail ArgumentError, "`phone` must contain digits" if phone.scan(/\d/).none?
118
+
119
+ # @!group Main
120
+
121
+ # Send HTTP request to the API to ask them to transmit your SMS
122
+ #
123
+ # @return [Boolean] <tt>true</tt> if the SMS has been sent, <tt>false</tt> otherwise
124
+ #
125
+ # @param [String] phone The phone to send the SMS to. In free-form, will be sanitized.
126
+ # @param [String] message The text of your message.
127
+ #
128
+ # @raise [SmsPilot::InvalidPhoneError] if you pass anythig but a String with the <tt>phone</tt> argument
129
+ # @raise [SmsPilot::InvalidMessageError] if you pass anythig but a String with the <tt>message</tt> argument
130
+ # @raise [SmsPilot::InvalidMessageError] if your message is empty
131
+ # @raise [SmsPilot::InvalidPhoneError] if your phone is empty
132
+ # @raise [SmsPilot::InvalidPhoneError] if your phone has no digits
133
+ #
134
+ # @example
135
+ # client.send_sms("+7 (902) 123-45-67", "Привет, мир!") # => true
136
+ #
137
+ def send_sms(phone, message)
138
+ validate_phone! phone
139
+ validate_message! message
41
140
 
42
141
  @phone = normalize_phone(phone)
43
- @url = build_url(@phone, text)
142
+ uri = build_uri(@phone, message)
143
+ @url = uri.to_s
144
+
145
+ response = Net::HTTP.get_response(uri)
44
146
 
45
- response = HTTP.timeout(connect: 15, read: 30).accept(:json).get(@url)
46
- @response_status = response.status.code
47
- @response_headers = response.headers.to_h
48
- @response_body = response.body.to_s
147
+ @response_body = response.body
148
+ @response_status = response.code.to_i
149
+ @response_headers = response.each_capitalized.to_h
49
150
 
50
- unless response.status.success?
51
- @error = "HTTP request failed with code #{response.status.code}"
151
+ unless response.is_a?(Net::HTTPSuccess)
152
+ @error = "HTTP request failed with code #{response.code}"
52
153
  return false
53
154
  end
54
155
 
55
156
  @response_data = JSON.parse @response_body
56
157
 
57
- return @error = "#{error_description} (код ошибки: #{error_code})" if rejected?
158
+ if rejected?
159
+ @error = "#{error_description} (error code: #{error_code})"
160
+ return false
161
+ end
162
+
58
163
  return true
59
164
 
60
165
  rescue JSON::ParserError => error
61
166
  @error = "API returned invalid JSON. #{error.message}"
167
+ return false
62
168
 
63
- rescue HTTP::Error => error
64
- @error = error.message
65
-
66
- rescue => error
169
+ rescue SocketError, EOFError, IOError, SystemCallError,
170
+ Timeout::Error, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
171
+ Net::ProtocolError, OpenSSL::SSL::SSLError => error
67
172
  @error = error.message
173
+ return false
68
174
  end
69
175
 
176
+ # @!endgroup
70
177
 
178
+
179
+ # @!group State accessors
180
+
181
+ # Your current balance, remaining after sending that latest SMS.
182
+ #
183
+ # @return [nil, Float] Always <tt>nil</tt> before you send SMS and if the SMS was not sent, always Float after successfull SMS transmission.
184
+ # @example
185
+ # client.balance #=> 20215.25
186
+ #
71
187
  def balance
72
188
  @response_data["balance"]&.to_f if sms_sent?
73
189
  end
74
190
 
75
191
 
76
- # Коды ошибок: https://smspilot.ru/apikey.php#err
77
- # Расшифровка ошибки пишется в @error
192
+ # Numerical code of the error that occured when sending the SMS. In the range from 0 to 715 (which may change).
193
+ #
194
+ # @return [nil, Integer] <tt>nil</tt> is returned before sending SMS. Otherwise <tt>Integer</tt>
195
+ # @example
196
+ # client.error_code #=> 122
197
+ # @see #error
198
+ # @see #error_description
199
+ # @see https://smspilot.ru/apikey.php#err Error codes at the API documentation website
78
200
  #
79
201
  def error_code
80
202
  @response_data.dig("error", "code")&.to_i if rejected?
81
203
  end
82
204
 
83
205
 
84
- # Коды ошибок: https://smspilot.ru/apikey.php#err
85
- # Расшифровка ошибки пишется в @error
206
+ # Description of the error that occured when sending the SMS
207
+ #
208
+ # @return [nil, String] <tt>nil</tt> is returned before sending SMS. Otherwise <tt>String</tt>
209
+ # @example
210
+ # client.error_description #=> "Пользователь временно блокирован (спорная ситуация)"
211
+ # @see #error
212
+ # @see #error_code
213
+ # @see https://smspilot.ru/apikey.php#err Error codes at the API documentation website
86
214
  #
87
215
  def error_description
88
216
  @response_data.dig("error", "description_ru") if rejected?
89
217
  end
90
218
 
91
219
 
92
- # HTTP запрос удался, но API отказался отправлять SMS
220
+ # Did the API reject your request to send that SMS
221
+ #
222
+ # @return [Boolean] <tt>false</tt> is returned before sending SMS. Otherwise the <tt>Boolean</tt> corresponds to whether your request to send an SMS was rejected.
223
+ # @example
224
+ # client.rejected? #=> false
225
+ #
93
226
  def rejected?
94
227
  return false if sms_sent?
95
228
  @response_data["error"].is_a? Hash
96
229
  end
97
230
 
98
231
 
99
- # API сообщает, что мы заблокированы
232
+ # Did the API block you
100
233
  #
101
- # 105 из-за низкого баланса
102
- # 106 за спам/ошибки
103
- # 107 за недостоверные учетные данные / недоступна эл. почта / проблемы с телефоном
104
- # 122 спорная ситуация
234
+ # Error code | Description
235
+ # :---|:------------------
236
+ # 105 | из-за низкого баланса
237
+ # 106 | за спам/ошибки
238
+ # 107 | за недостоверные учетные данные / недоступна эл. почта / проблемы с телефоном
239
+ # 122 | спорная ситуация
105
240
  #
106
- # Расшифровка ошибки пишется в @error
241
+ # @return [Boolean] <tt>nil</tt> is returned before sending SMS. Otherwise the <tt>Boolean</tt> corresponds to whether the API has blocked you.
242
+ # @example
243
+ # client.sender_blocked? #=> false
244
+ # @see #error
245
+ # @see https://smspilot.ru/apikey.php#err Error codes at the API documentation website
107
246
  #
108
247
  def sender_blocked?
109
248
  [105, 106, 107, 122].include? error_code
110
249
  end
111
250
 
112
251
 
113
- # Цена отправленной только что SMS
252
+ # The cost of the SMS that has just been sent, in RUB
253
+ #
254
+ # @return [nil, Float]
255
+ # @example
256
+ # client.sms_cost #=> 2.63
257
+ #
114
258
  def sms_cost
115
259
  @response_data["cost"] if sms_sent?
116
260
  end
117
261
 
118
262
 
119
- # API успешно отправил SMS
263
+ # Has the SMS transmission been a success.
264
+ #
265
+ # @return [Boolean] <tt>nil</tt> is returned before sending SMS. Otherwise the <tt>Boolean</tt> corresponds to the result of SMS transmission.
266
+ # @see #sms_status
267
+ # @see #rejected?
268
+ # @see #error
269
+ #
270
+ # @example
271
+ # client.sms_sent? #=> true
272
+ #
120
273
  def sms_sent?
121
274
  @response_data["send"] != nil
122
275
  end
123
276
 
124
277
 
125
- # Статус доставки SMS
126
- # https://smspilot.ru/apikey.php#status
278
+ # SMS delivery status, as returned by the API
279
+ #
280
+ # @return [nil, Integer] <tt>nil</tt> is returned before sending SMS or if the request was rejected. Otherwise an <tt>Integer</tt> in the range of [-2..3] is returned.
281
+ # @see https://smspilot.ru/apikey.php#status List of available statuses at API documentation website
282
+ #
283
+ # Code | Name | Final? | Description
284
+ # ----:|:--------------|:-------|:-------------
285
+ # -2 | Ошибка | Да | Ошибка, неправильные параметры запроса
286
+ # -1 | Не доставлено | Да | Сообщение не доставлено (не в сети, заблокирован, не взял трубку), PING — не в сети, HLR — не обслуживается (заблокирован)
287
+ # 0 | Новое | Нет | Новое сообщение/запрос, ожидает обработки у нас на сервере
288
+ # 1 | В очереди | Нет | Сообщение или запрос ожидают отправки на сервере оператора
289
+ # 2 | Доставлено | Да | Доставлено, звонок совершен, PING — в сети, HLR — обслуживается
290
+ # 3 | Отложено | Нет | Отложенная отправка, отправка сообщения/запроса запланирована на другое время
291
+ #
292
+ # @example
293
+ # client.sms_status #=> 2
127
294
  #
128
295
  def sms_status
129
296
  @response_data.dig("send", 0, "status")&.to_i if sms_sent?
130
297
  end
131
298
 
299
+ # @!endgroup
132
300
 
133
- private
134
301
 
135
- def build_url(phone, text)
136
- URI.parse(API_ENDPOINT).tap do |url|
137
- url.query = URI.encode_www_form({ apikey: @api_key, format: :json, send: text, to: phone })
138
- end.to_s
302
+ # The URI we will send an HTTP request to
303
+ #
304
+ # @private
305
+ # @return [URI]
306
+ # @raise [URI::InvalidURIError] but is very unlikely because we provide the URL ourselves
307
+ #
308
+ # @example
309
+ # build_uri("79021234567", "Hello, World!")
310
+ # #=> #<URI::HTTPS https://smspilot.ru/api.php?apikey=XXX…&format=json&send=Hello%2C+World%21&to=79021234567>
311
+ #
312
+ private def build_uri(phone, text)
313
+ URI.parse(API_ENDPOINT).tap do |uri|
314
+ uri.query = URI.encode_www_form({ apikey: @api_key, format: :json, send: text, to: phone })
315
+ end
139
316
  end
140
317
 
141
- def normalize_phone(phone)
318
+
319
+ # Cleans up your phone from anything but digits. Also replaces 8 to 7 if it is the first digit.
320
+ #
321
+ # @private
322
+ # @return [String]
323
+ #
324
+ # @example
325
+ # normalize_phone("8 (902) 123-45-67") #=> 79021234567
326
+ # normalize_phone("+7-902-123-45-67") #=> 79021234567
327
+ #
328
+ private def normalize_phone(phone)
142
329
  phone.gsub(/[^0-9]/, '').sub(/^8/, '7').gsub('+7', '8')
143
330
  end
144
331
 
332
+
333
+ # Validates phone
334
+
335
+ # @private
336
+ # @return [nil]
337
+ #
338
+ # @raise [SmsPilot::InvalidPhoneError] if you pass anythig but a String with the <tt>phone</tt> argument
339
+ # @raise [SmsPilot::InvalidPhoneError] if your phone is empty
340
+ # @raise [SmsPilot::InvalidPhoneError] if your phone has no digits
341
+ #
342
+ private def validate_phone!(phone)
343
+ fail SmsPilot::InvalidPhoneError, "phone must be a String, you pass a #{phone.class} (#{phone})" unless phone.is_a? String
344
+ fail SmsPilot::InvalidPhoneError, "phone cannot be empty" if phone == ""
345
+ fail SmsPilot::InvalidPhoneError, "phone must contain digits" if phone.scan(/\d/).none?
346
+ end
347
+
348
+
349
+ # Validates message
350
+
351
+ # @private
352
+ # @return [nil]
353
+ #
354
+ # @raise [SmsPilot::InvalidMessageError] if you pass anythig but a String with the <tt>message</tt> argument
355
+ # @raise [SmsPilot::InvalidMessageError] if your message is empty
356
+ #
357
+ private def validate_message!(message)
358
+ fail SmsPilot::InvalidMessageError, "SMS message must be a String, you pass a #{ message.class} (#{ message})" unless message.is_a? String
359
+ fail SmsPilot::InvalidMessageError, "SMS message cannot be empty" if message == ""
360
+ end
361
+
145
362
  end
146
363
  end
@@ -1,5 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SmsPilot
4
- class Error < StandardError; end
4
+
5
+ class InvalidAPIkeyError < ArgumentError; end
6
+ class InvalidMessageError < ArgumentError; end
7
+ class InvalidPhoneError < ArgumentError; end
8
+
5
9
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SmsPilot
4
- VERSION = "0.0.3"
4
+
5
+ # Gem version
6
+ VERSION = "0.0.4"
7
+
5
8
  end
@@ -3,20 +3,20 @@
3
3
  require_relative "lib/sms_pilot/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
+ spec.name = "sms-pilot-api-v1"
6
7
  spec.authors = ["Sergey Pedan"]
7
8
  spec.summary = "Simple wrapper around SMS pilot API v1"
8
9
  spec.description = "#{spec.summary}. Version 1 because it returns more data within its standard response"
9
10
  spec.email = ["sergey.pedan@gmail.com"]
10
- spec.homepage = "https://github.com/sergeypedan/sms-pilot-api-v1"
11
+ spec.homepage = "https://github.com/sergeypedan/#{spec.name}"
11
12
  spec.license = "MIT"
12
- spec.name = "sms-pilot-api-v1"
13
13
  spec.version = SmsPilot::VERSION
14
14
 
15
15
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
16
16
 
17
17
  spec.metadata = {
18
- "changelog_uri" => "#{spec.homepage}/blob/master/Changelog.md",
19
- "documentation_uri" => "#{spec.homepage}#usage",
18
+ "changelog_uri" => "#{spec.homepage}/blob/master/CHANGELOG.md",
19
+ "documentation_uri" => "https://rubydoc.info/github/sergeypedan/#{spec.name}/master/",
20
20
  "homepage_uri" => spec.homepage,
21
21
  "source_code_uri" => spec.homepage
22
22
  }
@@ -24,12 +24,10 @@ Gem::Specification.new do |spec|
24
24
  # Specify which files should be added to the gem when it is released.
25
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
26
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
27
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features|pkg|doc)/}) }
28
28
  end
29
29
 
30
30
  spec.bindir = "bin"
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_runtime_dependency "http", "~> 4"
34
-
35
33
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms-pilot-api-v1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Pedan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: http
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '4'
11
+ date: 2021-05-08 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Simple wrapper around SMS pilot API v1. Version 1 because it returns
28
14
  more data within its standard response
29
15
  email:
@@ -34,6 +20,7 @@ extra_rdoc_files: []
34
20
  files:
35
21
  - ".gitignore"
36
22
  - ".rspec"
23
+ - ".yardopts"
37
24
  - CHANGELOG.md
38
25
  - Gemfile
39
26
  - Gemfile.lock
@@ -45,14 +32,13 @@ files:
45
32
  - lib/sms_pilot/client.rb
46
33
  - lib/sms_pilot/errors.rb
47
34
  - lib/sms_pilot/version.rb
48
- - sms-pilot-api-v1-0.0.2.gem
49
35
  - sms-pilot-api-v1.gemspec
50
36
  homepage: https://github.com/sergeypedan/sms-pilot-api-v1
51
37
  licenses:
52
38
  - MIT
53
39
  metadata:
54
- changelog_uri: https://github.com/sergeypedan/sms-pilot-api-v1/blob/master/Changelog.md
55
- documentation_uri: https://github.com/sergeypedan/sms-pilot-api-v1#usage
40
+ changelog_uri: https://github.com/sergeypedan/sms-pilot-api-v1/blob/master/CHANGELOG.md
41
+ documentation_uri: https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/
56
42
  homepage_uri: https://github.com/sergeypedan/sms-pilot-api-v1
57
43
  source_code_uri: https://github.com/sergeypedan/sms-pilot-api-v1
58
44
  post_install_message:
@@ -70,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
56
  - !ruby/object:Gem::Version
71
57
  version: '0'
72
58
  requirements: []
73
- rubygems_version: 3.2.5
59
+ rubygems_version: 3.2.8
74
60
  signing_key:
75
61
  specification_version: 4
76
62
  summary: Simple wrapper around SMS pilot API v1
Binary file