smster_ruby 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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