smster_ruby 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 87f47890a43dd16067c3fe5ae259c2d8fb2e9b04
4
+ data.tar.gz: ea2fd3db01d6be1ead02a29912eaf1f70c164ec4
5
+ SHA512:
6
+ metadata.gz: 86c2d64f8da1f45ddb31b345d2f3ef8e8b1acfcaae250bf734c675dcbaaaaabeb9fe1f344c8abe2c0c2f214651fcdeb5d70cd11d4db5038446fc4c06f0c0f082
7
+ data.tar.gz: ce53c2262a1d489012133175c6a022c40bcf007b3b6d57310ea893bfb04573f57141676d1cf271a3fdac571bcd776f53ad96ec530cda6741e106dccb864c490d
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.pattern = 'test/**/*_test.rb'
5
+ end
6
+
7
+ desc 'Run tests'
8
+ task default: :test
@@ -0,0 +1,13 @@
1
+ module Smster
2
+ class Configuration
3
+ attr_accessor :nexmo_key, :nexmo_sekret,
4
+ :smsru_api_id, :clickatell_authorization_code
5
+
6
+ def initialize
7
+ @nexmo_key = ''
8
+ @nexmo_sekret = ''
9
+ @clickatell_authorization_code = ''
10
+ @smsru_api_id = ''
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,29 @@
1
+ class Sms::Smsru < Sms
2
+ private
3
+
4
+ def send_to_provider
5
+ phone = to.gsub(/\D/, '')
6
+
7
+ response = send_request(text, phone)
8
+ generate_send_resonse(response)
9
+ end
10
+
11
+ def send_request(text, phone)
12
+ config = Smster.configuration
13
+ api_id = config.smsru_api_id
14
+
15
+ RestClient.post(
16
+ 'http://sms.ru/sms/send',
17
+ 'api_id' => api_id,
18
+ 'text' => text,
19
+ 'to' => phone,
20
+ 'from' => name
21
+ )
22
+ end
23
+
24
+ def generate_send_resonse(response)
25
+ return unless response.include?('100')
26
+
27
+ (/\n(.*)\n/).match(response)[1]
28
+ end
29
+ end
data/lib/smster/sms.rb ADDED
@@ -0,0 +1,29 @@
1
+ class Sms
2
+ attr_accessor :name, :type, :to,
3
+ :text, :status, :status_message
4
+
5
+ ## Codes
6
+ STATUSES = { created: 0, sent: 1, delivered: 2, failed: 3 }
7
+
8
+ ## Etc.
9
+ def self.send_sms(attrs = {})
10
+ new(attrs).send_sms
11
+ end
12
+
13
+ def initialize(attrs = {})
14
+ attrs.each do |name, value|
15
+ send("#{name}=", value)
16
+ end
17
+
18
+ @status = STATUSES[:created]
19
+ end
20
+
21
+ def send_sms
22
+ api_message_id = send_to_provider
23
+
24
+ self.status = STATUSES[:sent] if api_message_id
25
+ self.status ||= STATUSES[:failed]
26
+
27
+ self
28
+ end
29
+ end
data/lib/smster.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'rest_client'
2
+ require 'smster/configuration'
3
+ require 'smster/sms'
4
+ require 'smster/sms/smsru'
5
+
6
+ module Smster
7
+ attr_accessor :configuration
8
+
9
+ def self.configuration
10
+ @configuration ||= Configuration.new
11
+ end
12
+
13
+ def self.configure
14
+ yield(configuration)
15
+ end
16
+ end
17
+
18
+ require './config/smster'
@@ -0,0 +1,30 @@
1
+ require './test/test_helper'
2
+
3
+ class SmsruTest < Minitest::Test
4
+ def test_should_send
5
+ stub_send_request
6
+
7
+ @statuses = Sms::STATUSES
8
+ phone = (99_999_999 * rand).to_s
9
+ attrs = { to: phone, text: 'i am smster!' }
10
+
11
+ sms = Sms::Smsru.new(attrs)
12
+ sms.send_sms
13
+
14
+ assert_equal @statuses[:sent], sms.status
15
+ end
16
+
17
+ private
18
+
19
+ def stub_send_request
20
+ stub_request(:post, 'http://sms.ru/sms/send')
21
+ .to_return(
22
+ status: 200,
23
+ body:
24
+ '100
25
+ 201523-1000007
26
+ balance=52.54',
27
+ headers: {}
28
+ )
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'webmock/minitest'
3
+ require 'smster'
metadata ADDED
@@ -0,0 +1,53 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smster_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - doniv
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: SMS sending service through different providers with maximum convenience.
14
+ email:
15
+ - donivrecord@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Rakefile
21
+ - lib/smster.rb
22
+ - lib/smster/configuration.rb
23
+ - lib/smster/sms.rb
24
+ - lib/smster/sms/smsru.rb
25
+ - test/smsru_test.rb
26
+ - test/test_helper.rb
27
+ homepage: https://github.com/IlyaDonskikh/smster_ruby
28
+ licenses:
29
+ - MIT
30
+ metadata: {}
31
+ post_install_message:
32
+ rdoc_options: []
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project:
47
+ rubygems_version: 2.4.6
48
+ signing_key:
49
+ specification_version: 4
50
+ summary: SMS service
51
+ test_files:
52
+ - test/smsru_test.rb
53
+ - test/test_helper.rb