client_smsapi 0.1.0 → 0.2.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
  SHA1:
3
- metadata.gz: dee4f3a7cb8317e37302387640257f2ea0108fe8
4
- data.tar.gz: 2f15bbc1f1c73053a00cc9ea7c9a0dd66f81a127
3
+ metadata.gz: 0e9ff6b11a54019d8d1a170e4abd3e0cd797db92
4
+ data.tar.gz: 6bec8a73814b01558332168f50f87ef448ad221d
5
5
  SHA512:
6
- metadata.gz: e67e442196b6c9ac2691f97ad80d7a2e908be432ffc965cfc4fb01041e7cd8361b28613d18d15686b8ef01a06276be52f320fa0271070b3daf57425151fa1d4d
7
- data.tar.gz: 57604646d202fa3de83c1f58470c209bab47c02c606ec8a4caa6a88f10d18537b72369c1efbb2cabdd2c11d5f033d99e96cdf253f2b2e814a92eb565b8eb2036
6
+ metadata.gz: 4f55fb5bc0ddff72e9452bc140eb265977b10ce9241ba729db2bf56a89e39eebea804d3f2cf7bd61fffd7f14651671c8d2c46e00b370a9b4b49956be7d98801b
7
+ data.tar.gz: 1e279094ce0315a1c532dd59edb090feb70cd5781c9e5c13b575b18862b970c4399ffe09a4c108456ea75492a8033ab4bfa634088ba4da0d27cc64d08d63b06d
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ *.gem
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
- --format documentation
2
1
  --color
2
+ --format documentation
3
+ --require spec_helper
@@ -0,0 +1 @@
1
+ 2.2.0@sms_api
@@ -2,3 +2,4 @@ language: ruby
2
2
  rvm:
3
3
  - 2.2.0
4
4
  before_install: gem install bundler -v 1.10.5
5
+ script: bundle exec rspec spec
@@ -0,0 +1,12 @@
1
+ 0.1.0
2
+ -----------
3
+ - Initial gem version and setup
4
+ - Add configuration options
5
+
6
+ Configuration example
7
+ ```ruby
8
+ SMSApi.configure do |config|
9
+ config.username = 'what_a_username'
10
+ config.secret = 'what_a_secret'
11
+ end
12
+ ```
data/README.md CHANGED
@@ -1,8 +1,15 @@
1
- # ClientSmsapi
1
+ # Client SMSApi
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/client_smsapi`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ [![Code Climate][1]][2] | [![Test Coverage][3]][4] | [![Gem Version][5]][6]
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ [1]: https://codeclimate.com/github/mentero/client_smsapi/badges/gpa.svg
6
+ [2]: https://codeclimate.com/github/mentero/client_smsapi
7
+ [3]: https://codeclimate.com/github/mentero/client_smsapi/badges/coverage.svg
8
+ [4]: https://codeclimate.com/github/mentero/client_smsapi/coverage
9
+ [5]: https://badge.fury.io/rb/client_smsapi.svg
10
+ [6]: http://badge.fury.io/rb/client_smsapi
11
+
12
+ For details visit [SMSApi](http://www.smsapi.pl/) homepage
6
13
 
7
14
  ## Installation
8
15
 
@@ -20,17 +27,41 @@ Or install it yourself as:
20
27
 
21
28
  $ gem install client_smsapi
22
29
 
30
+ ## Configuration
31
+
32
+ The client needs your credentials. Configure them!
33
+
34
+ ```ruby
35
+ SMSApi.configure do |config|
36
+ config.username = 'what_a_username'
37
+ config.secret = 'what_a_secret'
38
+ end
39
+ ```
40
+
41
+ Rails users are recommended to put this code into initializer file such as `config/initializers/smsapi.rb`
42
+
43
+
23
44
  ## Usage
24
45
 
25
- TODO: Write usage instructions here
46
+ ```ruby
47
+ message = SMSApi::SMS::Message::Eco.new(to: 48123456789, body: 'test')
48
+ SMSApi::SMS::Client.new.send_message!(message)
49
+ #<SMSApi::Response::Regular:0x007f82eca9ee78 @id=1440528348109731150, @points=0.07, @status=:ok>
50
+ ```
26
51
 
27
- ## Development
52
+ `.send_message!` will raise an error in case of failure.
53
+ There is also `.send_message` alternative available.
28
54
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
55
+ ## Test mode
30
56
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
57
+ You can use library in `test_mode`. Test mode will perform API request without sending a message and charging you.
32
58
 
33
- ## Contributing
59
+ ```ruby
60
+ message = SMSApi::SMS::Message::Eco.new(to: 48123456789, body: 'test')
61
+ SMSApi::SMS::Client.new(test_mode: true).send_message!(message)
62
+ #<SMSApi::Response::Regular:0x007f82eca9ee78 @id=1440528348109731150, @points=0.07, @status=:ok>
63
+ ```
34
64
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/client_smsapi.
65
+ ## Contributing
36
66
 
67
+ Bug reports and pull requests are welcome on GitHub at https://github.com/mentero/client_smsapi.
data/Rakefile CHANGED
@@ -1,6 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
7
+
8
+ task :console do
9
+ exec 'pry -r client_smsapi -I ./lib'
10
+ end
@@ -4,21 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'client_smsapi/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "client_smsapi"
8
- spec.version = ClientSmsapi::VERSION
9
- spec.authors = ["Artur Debski"]
10
- spec.email = ["xmentero@gmail.com"]
7
+ spec.name = 'client_smsapi'
8
+ spec.version = SMSApi::VERSION
9
+ spec.authors = ['Artur Debski']
10
+ spec.email = ['xmentero@gmail.com']
11
11
 
12
- spec.summary = "smsapi.pl ruby client"
13
- spec.description = "smsapi.pl ruby client"
14
- spec.homepage = "https://github.com/mentero/client_smsapi"
12
+ spec.summary = 'smsapi.pl ruby client'
13
+ spec.description = 'smsapi.pl ruby client'
14
+ spec.homepage = 'https://github.com/mentero/client_smsapi'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
17
+ spec.bindir = 'exe'
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec"
21
+ spec.add_dependency 'httparty', '~> 0.13'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.10'
24
+ spec.add_development_dependency 'rake', '~> 10.0'
25
+ spec.add_development_dependency 'rspec', '~> 3.3'
26
+ spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'simplecov'
28
+ spec.add_development_dependency 'codeclimate-test-reporter'
24
29
  end
@@ -1,5 +1,26 @@
1
- require "client_smsapi/version"
1
+ require 'client_smsapi/version'
2
+ require 'client_smsapi/response'
3
+ require 'client_smsapi/configuration'
4
+ require 'client_smsapi/validators'
2
5
 
3
- module ClientSmsapi
4
- # Your code goes here...
6
+ require 'httparty'
7
+
8
+ require 'client_smsapi/sms'
9
+
10
+ module SMSApi
11
+ class << self
12
+ attr_writer :configuration
13
+ end
14
+
15
+ def self.configuration
16
+ @configuration ||= Configuration.new
17
+ end
18
+
19
+ def self.reset
20
+ @configuration = Configuration.new
21
+ end
22
+
23
+ def self.configure
24
+ yield(configuration)
25
+ end
5
26
  end
@@ -0,0 +1,5 @@
1
+ module SMSApi
2
+ class Configuration
3
+ attr_accessor :username, :password
4
+ end
5
+ end
@@ -0,0 +1,55 @@
1
+ error:
2
+ 8: Błąd w odwołaniu (Prosimy zgłosić)
3
+ 11: Zbyt długa lub brak wiadomości lub ustawiono parametr nounicode i pojawiły się znaki specjalne w wiadomości. Dla wysyłki VMS błąd oznacza brak pliku WAV lub treści TTS.
4
+ 12: Wiadomość zawiera ponad 160 znaków (gdy użyty parametr &single=1).
5
+ 13: Brak prawidłowych numerów telefonów (numery błędne, znajdujące się na czarnej liście lub zagraniczne przy wyłączonej opcji wysyłki za granicę).
6
+ 14: Nieprawidłowe pole nadawcy.
7
+ 17: Nie można wysłać FLASH ze znakami specjalnymi.
8
+ 18: Nieprawidłowa liczba parametrów.
9
+ 19: Za dużo wiadomości w jednym odwołaniu.
10
+ 20: Nieprawidłowa liczba parametrów IDX.
11
+ 21: Wiadomość MMS ma za duży rozmiar (maksymalnie 300kB).
12
+ 22: Błędny format SMIL.
13
+ 23: Błąd pobierania pliku dla wiadomości MMS lub VMS.
14
+ 24: Błędny format pobieranego pliku.
15
+ 25: Parametry &normalize oraz &datacoding nie mogą być używane jednocześnie.
16
+ 26: Za długi temat wiadomości. Temat może zawierać maksymalnie 30 znaków.
17
+ 27: Parametr IDX za długi. Maksymalnie 255 znaków.
18
+ 30: Brak parametru UDH jak podany jest datacoding=bin.
19
+ 31: Błąd konwersji TTS
20
+ 32: Nie można wysyłać wiadomości Eco, MMS i VMS na zagraniczne numery.
21
+ 33: Brak poprawnych numerów.
22
+ 35: 'Błędna wartość parametru tts_lector. Dostępne wartości: agnieszka, ewa, jacek, jan, maja.'
23
+ 36: Nie można wysyłać wiadomości binarnych z ustawioną stopką.
24
+ 40: Brak grupy o podanej nazwie
25
+ 41: Wybrana grupa jest pusta (brak kontaktów w grupie).
26
+ 50: Nie można zaplanować wysyłki na więcej niż 3 miesiące w przyszłość.
27
+ 51: Ustawiono błędną godzinę wysyłki, wiadomość VMS mogą być wysyłane tylko pomiędzy godzinami 8 a 22 lub ustawiono kombinację parametrów try i interval powodującą możliwość próby połączenia po godzinie 22.
28
+ 52: Za dużo prób wysyłki wiadomości do jednego numeru (maksymalnie 10 prób w przeciągu 60sek do jednego numeru).
29
+ 53: Nieunikalny parametr idx. Wiadomość o podanym idx została wysłana w ostatnich czterech dniach lub jest zaplanowana do wysyłki w przyszłości przy wykorzystaniu parametru &check_idx=1.
30
+ 54: Błędny format daty. Ustawiono sprawdzanie poprawności daty &date_validate=1.
31
+ 55: Brak numerów stacjonarnych w wysyłce i ustawiony parametr skip_gsm.
32
+ 56: Różnica pomiędzy datą wysyłki a datą wygaśnięcia nie może być mniejsza niż 15 minut i większa niż 12 godzin.
33
+ 57: Numer znajduje się na czarnej liście dla danego użytkownika.
34
+ 60: Grupa kodów o podanej nazwie nie istnieje.
35
+ 61: Data ważności grupy kodów minęła.
36
+ 62: Brak wolnych kodów w podanej grupie (wszystkie kody zostały już wykorzystane).
37
+ 65: Brak wystarczającej liczby kodów rabatowych dla wysyłki. Liczba niewykorzystanych kodów w grupie musi być co najmniej równa liczbie numerów w wysyłce.
38
+ 66: W treści wiadomości brak jest znacznika [%kod%] dla wysyłki z parametrem &discount_group (znacznik taki jest wymagany).
39
+ 70: Błędny adres CALLBACK w parametrze notify_url.
40
+ 72: Parametr notify_url może być używany tylko dla odwołań z jednym numerem (nie może być stosowany dla wysyłek masowych).
41
+ 74: Data wysyłki nie spełnia ograniczeń czasowych ustawionych na koncie.
42
+ 75: Brak zaplanowanych wiadomości do usunięcia.
43
+ 101: Niepoprawne lub brak danych autoryzacji. UWAGA! Hasło do API może różnić się od hasła do Panelu Klienta.
44
+ 102: Nieprawidłowy login lub hasło.
45
+ 103: Brak punktów dla tego użytkownika.
46
+ 104: Brak szablonu.
47
+ 105: Błędny adres IP (włączony filtr IP dla interfejsu API).
48
+ 110: Usługa (SMS, MMS, VMS lub HLR) nie jest dostępna na danym koncie.
49
+ 200: Nieudana próba wysłania wiadomości, prosimy ponowić odwołanie.
50
+ 201: Wewnętrzny błąd systemu (prosimy zgłosić).
51
+ 202: Zbyt duża ilość jednoczesnych odwołań do serwisu, wiadomość nie została wysłana (prosimy odwołać się ponownie).
52
+ 300: Nieprawidłowa wartość pola points (przy użyciu pola points jest wymagana wartość 1).
53
+ 301: Wiadomość o podanym ID nie istnieje lub jest zaplanowana do wysłania w przeciągu najbliższych 60 sekund (nie można usunąć takiej wiadomości).
54
+ 400: Nieprawidłowy ID statusu wiadomości.
55
+ 999: Wewnętrzny błąd systemu (prosimy zgłosić).
@@ -0,0 +1,17 @@
1
+ require_relative 'response/error'
2
+ require_relative 'response/regular'
3
+
4
+ module SMSApi
5
+ class Response
6
+ InvalidStatus = Class.new(StandardError)
7
+
8
+ attr_reader :status
9
+
10
+ ALLOWED_STATUSES = [:ok, :error]
11
+
12
+ def initialize(status)
13
+ fail InvalidStatus unless ALLOWED_STATUSES.include?(status)
14
+ @status = status
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ require 'yaml'
2
+
3
+ module SMSApi
4
+ class Response
5
+ class Error < SMSApi::Response
6
+ attr_reader :code, :message
7
+
8
+ def initialize(code = nil)
9
+ @code = code
10
+ @message = MESSAGES.fetch(code, 'Unknown error')
11
+
12
+ super(:error)
13
+ end
14
+
15
+ def exception
16
+ StandardError.new("[CODE: #{code}] #{message}")
17
+ end
18
+
19
+ MESSAGES = YAML.load_file('lib/client_smsapi/error/messages.yml')['error'].freeze
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module SMSApi
2
+ class Response
3
+ class Regular < SMSApi::Response
4
+ attr_reader :id, :points
5
+
6
+ def initialize(id, points)
7
+ @id = id.to_i
8
+ @points = points.to_f
9
+
10
+ super(:ok)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ require_relative 'sms/message'
2
+ require_relative 'sms/client'
3
+
4
+ module SMSApi
5
+ module SMS
6
+ end
7
+ end
@@ -0,0 +1,64 @@
1
+ module SMSApi
2
+ module SMS
3
+ class Client
4
+ attr_accessor :test_mode
5
+
6
+ SERVERS = ['https://api.smsapi.pl', 'https://api2.smsapi.pl/sms.do']
7
+
8
+ include HTTParty
9
+ base_uri SERVERS.first
10
+
11
+ def initialize(test_mode: false)
12
+ @test_mode = test_mode
13
+ end
14
+
15
+ def send_message(message, additional_params = {})
16
+ params = build_params(message, additional_params)
17
+ response = self.class.post('/sms.do', query: params)
18
+ parse_response(response)
19
+ end
20
+
21
+ def send_message!(message)
22
+ response = send_message(message)
23
+ fail response if response.is_a? SMSApi::Response::Error
24
+ response
25
+ end
26
+
27
+ private
28
+
29
+ def build_params(message, additional_params)
30
+ base_params
31
+ .merge(message.to_params)
32
+ .merge(extra_params)
33
+ .merge(additional_params)
34
+ end
35
+
36
+ def parse_response(response)
37
+ if response.body.start_with?('OK:')
38
+ Response::Regular.new(*response.split(':').drop(1))
39
+ elsif response.body.start_with?('ERROR:')
40
+ code = response.body.match(/ERROR:(?<code>.*)/)[:code].to_i
41
+ Response::Error.new(code)
42
+ else
43
+ Response::Error.new
44
+ end
45
+ end
46
+
47
+ def extra_params
48
+ return @extra_params if @extra_params
49
+
50
+ @extra_params = {}
51
+ @extra_params[:test] = 1 if test_mode
52
+ @extra_params
53
+ end
54
+
55
+ def base_params
56
+ @base_params ||= {
57
+ username: SMSApi.configuration.username,
58
+ password: SMSApi.configuration.password,
59
+ encoding: 'utf-8'
60
+ }
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'message/eco'
2
+ require_relative 'message/2way'
3
+ require_relative 'message/pro'
4
+
5
+ module SMSApi
6
+ module SMS
7
+ class Message
8
+ attr_reader :to, :from, :body
9
+
10
+ def initialize(to:, from:, body:)
11
+ @to = to
12
+ @from = from
13
+ @body = body
14
+ end
15
+
16
+ def valid?
17
+ @valid ||= begin
18
+ Validators::MessageBodyValidator.valid_body?(body)
19
+ Validators::PhoneNumberValidator.valid_number?(to)
20
+ end
21
+ end
22
+
23
+ def to_params
24
+ @params ||= {
25
+ from: from.to_s,
26
+ to: to.to_s,
27
+ message: body
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ module SMSApi
2
+ module SMS
3
+ class Message
4
+ class TwoWay < SMSApi::SMS::Message
5
+ FROM = '2way'.freeze
6
+
7
+ def initialize(to:, from: FROM, body:)
8
+ super
9
+
10
+ @from = FROM
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module SMSApi
2
+ module SMS
3
+ class Message
4
+ class Eco < SMSApi::SMS::Message
5
+ FROM = 'Eco'.freeze
6
+
7
+ def initialize(to:, from: FROM, body:)
8
+ super
9
+
10
+ @from = FROM
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ module SMSApi
2
+ module SMS
3
+ class Message
4
+ class Pro < SMSApi::SMS::Message
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'validators/phone_number_validator'
2
+ require_relative 'validators/message_body_validator'
@@ -0,0 +1,50 @@
1
+ module SMSApi
2
+ module Validators
3
+ class MessageBodyValidator
4
+ DOUBLE_COST_CHARS = "\"^{}[]~\\|€\n".freeze
5
+ BASIC_CHARS = "\n\f\r !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~ ¡£¤¥§¿ÄÅÆÉÑÖØÜßàäåæçèéìñòöøùüΓΔΘΛΞΠΣΦΨΩ€".freeze
6
+
7
+ BASIC_LIMIT = 918
8
+ EXTRA_LIMIT = 402
9
+
10
+ def self.valid_body?(body)
11
+ new(body).valid?
12
+ end
13
+
14
+ attr_reader :body
15
+
16
+ def initialize(body)
17
+ @body = body
18
+ end
19
+
20
+ def valid?
21
+ proper_length? && !body.empty?
22
+ end
23
+
24
+ def proper_length?
25
+ if basic_charset?
26
+ body_size <= BASIC_LIMIT
27
+ else
28
+ body_size <= EXTRA_LIMIT
29
+ end
30
+ end
31
+
32
+ def body_codepoints
33
+ @body_codepoints ||= body.codepoints
34
+ end
35
+
36
+ def body_size
37
+ if basic_charset?
38
+ double = body_codepoints.count { |codepoint| DOUBLE_COST_CHARS.codepoints.include?(codepoint) }
39
+ body_codepoints.count + double
40
+ else
41
+ body_codepoints.count
42
+ end
43
+ end
44
+
45
+ def basic_charset?
46
+ @basic_charset ||= body_codepoints.all? { |c| BASIC_CHARS.codepoints.include?(c) }
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,18 @@
1
+ module SMSApi
2
+ module Validators
3
+ class PhoneNumberValidator
4
+ def self.valid_number?(number)
5
+ new(number).valid?
6
+ end
7
+
8
+ attr_reader :number
9
+ def initialize(number)
10
+ @number = number
11
+ end
12
+
13
+ def valid?
14
+ !!number.to_s.match(/^(48)?(\d){9}$/)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
- module ClientSmsapi
2
- VERSION = "0.1.0"
1
+ module SMSApi
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: client_smsapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artur Debski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-29 00:00:00.000000000 Z
11
+ date: 2015-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.13'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.13'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -40,6 +54,48 @@ dependencies:
40
54
  version: '10.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: codeclimate-test-reporter
43
99
  requirement: !ruby/object:Gem::Requirement
44
100
  requirements:
45
101
  - - ">="
@@ -61,7 +117,9 @@ extra_rdoc_files: []
61
117
  files:
62
118
  - ".gitignore"
63
119
  - ".rspec"
120
+ - ".ruby-version"
64
121
  - ".travis.yml"
122
+ - CHANGELOG.md
65
123
  - Gemfile
66
124
  - README.md
67
125
  - Rakefile
@@ -69,6 +127,20 @@ files:
69
127
  - bin/setup
70
128
  - client_smsapi.gemspec
71
129
  - lib/client_smsapi.rb
130
+ - lib/client_smsapi/configuration.rb
131
+ - lib/client_smsapi/error/messages.yml
132
+ - lib/client_smsapi/response.rb
133
+ - lib/client_smsapi/response/error.rb
134
+ - lib/client_smsapi/response/regular.rb
135
+ - lib/client_smsapi/sms.rb
136
+ - lib/client_smsapi/sms/client.rb
137
+ - lib/client_smsapi/sms/message.rb
138
+ - lib/client_smsapi/sms/message/2way.rb
139
+ - lib/client_smsapi/sms/message/eco.rb
140
+ - lib/client_smsapi/sms/message/pro.rb
141
+ - lib/client_smsapi/validators.rb
142
+ - lib/client_smsapi/validators/message_body_validator.rb
143
+ - lib/client_smsapi/validators/phone_number_validator.rb
72
144
  - lib/client_smsapi/version.rb
73
145
  homepage: https://github.com/mentero/client_smsapi
74
146
  licenses: []
@@ -94,4 +166,3 @@ signing_key:
94
166
  specification_version: 4
95
167
  summary: smsapi.pl ruby client
96
168
  test_files: []
97
- has_rdoc: