sms_gateway 0.0.2 → 0.1.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.
- data/README.rdoc +4 -3
- data/Rakefile +22 -0
- data/lib/sms_gateway/adapters/sms_global.rb +4 -1
- data/lib/sms_gateway/adapters/sms_trade.rb +26 -0
- data/lib/sms_gateway/base.rb +22 -6
- data/lib/sms_gateway/sms.rb +2 -1
- data/lib/sms_gateway/version.rb +2 -1
- data/lib/sms_gateway.rb +1 -0
- data/sms_gateway.gemspec +2 -0
- data/test/configuration_test.rb +50 -0
- data/test/sms_gateway_test.rb +55 -0
- data/test/test_helper.rb +11 -0
- metadata +22 -6
data/README.rdoc
CHANGED
@@ -31,7 +31,7 @@ To deliver SMS asynchronously this gem makes use of resque, a
|
|
31
31
|
popular queing system basd on the key-value data store redis. You need
|
32
32
|
to have a working resque and redis setup if you want to use
|
33
33
|
the aynchronous feature. For more information on resque visit
|
34
|
-
https://github.com/defunkt/resque.
|
34
|
+
https://github.com/defunkt/resque .
|
35
35
|
|
36
36
|
|
37
37
|
= Usage
|
@@ -64,10 +64,11 @@ resque documentation):
|
|
64
64
|
|
65
65
|
So far the gem is pretty limited. Ideas for following version are:
|
66
66
|
|
67
|
-
* unit tests
|
68
|
-
*
|
67
|
+
* more and better unit tests
|
68
|
+
* more sms gateway apis
|
69
69
|
* decoupling of resque
|
70
70
|
|
71
|
+
|
71
72
|
= License
|
72
73
|
|
73
74
|
GPLv3. Copyright 2011 Kai Rubarth.
|
data/Rakefile
CHANGED
@@ -1,2 +1,24 @@
|
|
1
1
|
require 'bundler'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
2
5
|
Bundler::GemHelper.install_tasks
|
6
|
+
|
7
|
+
desc 'Run unit tests'
|
8
|
+
Rake::TestTask.new(:test) do |test|
|
9
|
+
test.libs << 'lib' << 'test'
|
10
|
+
test.pattern = 'test/**/*_test.rb'
|
11
|
+
test.verbose = true
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Generate Documentation'
|
15
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'SmsGateway'
|
18
|
+
rdoc.options << '--line-numbers' << '--inline_source'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
@@ -6,8 +6,11 @@ module SmsGateway
|
|
6
6
|
require 'httparty'
|
7
7
|
include HTTParty
|
8
8
|
base_uri 'http://www.smsglobal.com'
|
9
|
+
|
9
10
|
def initialize(config={})
|
10
|
-
@config = SmsGateway::Base.
|
11
|
+
@config = {:user => SmsGateway::Base.user, :password => SmsGateway::Base.password,
|
12
|
+
:from => SmsGateway::Base.from}
|
13
|
+
@config.merge!(config)
|
11
14
|
end
|
12
15
|
|
13
16
|
def send_sms(sms)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module SmsGateway
|
2
|
+
|
3
|
+
module Adapters
|
4
|
+
|
5
|
+
class SmsTrade
|
6
|
+
require 'httparty'
|
7
|
+
include HTTParty
|
8
|
+
base_uri 'http://gateway.smstrade.de'
|
9
|
+
|
10
|
+
def initialize(config={})
|
11
|
+
@config = {:key => SmsGateway::Base.key, :from => SmsGateway::Base.from, :route => SmsGateway::Base.route}
|
12
|
+
@config.merge!(config)
|
13
|
+
end
|
14
|
+
|
15
|
+
def send_sms(sms)
|
16
|
+
options = @config.merge({:to => sms.to, :message => sms.text})
|
17
|
+
self.class.get('/', :query => options)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
data/lib/sms_gateway/base.rb
CHANGED
@@ -3,18 +3,34 @@ module SmsGateway
|
|
3
3
|
class Base
|
4
4
|
|
5
5
|
class << self
|
6
|
-
attr_accessor :
|
7
|
-
attr_reader :
|
6
|
+
attr_accessor :from, :user, :password, :key, :route
|
7
|
+
attr_reader :adapter
|
8
|
+
|
9
|
+
def configure
|
10
|
+
yield(self)
|
11
|
+
end
|
12
|
+
|
13
|
+
def adapter=(underscore_name)
|
14
|
+
klassname = underscore_name.split("_").map(&:capitalize).join
|
15
|
+
klass = SmsGateway::Adapters.const_get(klassname)
|
16
|
+
@adapter = klass.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def config
|
20
|
+
@config
|
21
|
+
end
|
8
22
|
|
9
23
|
def config=(options)
|
10
24
|
@config = options.symbolize_keys
|
11
|
-
|
12
|
-
|
13
|
-
|
25
|
+
adapter = @config.delete(:adapter)
|
26
|
+
@config.each do |k,v|
|
27
|
+
self.send "#{k}=", v
|
28
|
+
end
|
29
|
+
self.adapter = adapter
|
14
30
|
end
|
15
31
|
|
16
32
|
def deliver(options)
|
17
|
-
self.
|
33
|
+
self.adapter.send_sms(SmsGateway::Sms.new(options.symbolize_keys))
|
18
34
|
end
|
19
35
|
|
20
36
|
def self.deliver_later(text, to, from=Base.config[:from])
|
data/lib/sms_gateway/sms.rb
CHANGED
@@ -4,7 +4,8 @@ module SmsGateway
|
|
4
4
|
class Sms < Struct.new(:from, :to, :text)
|
5
5
|
|
6
6
|
def initialize(params)
|
7
|
-
self.from = params[:from]||SmsGateway::Base.config[:from]
|
7
|
+
#self.from = params[:from]||SmsGateway::Base.config[:from]
|
8
|
+
self.from = params[:from]||SmsGateway::Base.from
|
8
9
|
self.to = params[:to]
|
9
10
|
self.text = params[:text]
|
10
11
|
end
|
data/lib/sms_gateway/version.rb
CHANGED
data/lib/sms_gateway.rb
CHANGED
@@ -4,6 +4,7 @@ require 'rails/generators'
|
|
4
4
|
require 'sms_gateway/base'
|
5
5
|
require 'sms_gateway/sms'
|
6
6
|
require 'sms_gateway/adapters/sms_global'
|
7
|
+
require 'sms_gateway/adapters/sms_trade'
|
7
8
|
require 'sms_gateway/adapters/test'
|
8
9
|
require 'sms_gateway/jobs/sms_job'
|
9
10
|
require 'sms_gateway/generators/install/install_generator'
|
data/sms_gateway.gemspec
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class SmsGateway::ConfigurationTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
SmsGateway::Base.configure do |config|
|
8
|
+
config.from = '123456789'
|
9
|
+
config.user = 'some_user'
|
10
|
+
config.password = 'secret'
|
11
|
+
config.adapter = 'test'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_parse_user
|
16
|
+
assert_equal 'some_user', SmsGateway::Base.user
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_parse_password
|
20
|
+
assert_equal 'secret', SmsGateway::Base.password
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_parse_from
|
24
|
+
sms = SmsGateway::Sms.new(:text => 'test')
|
25
|
+
assert_equal '123456789', sms.from
|
26
|
+
end
|
27
|
+
|
28
|
+
# def test_parse_adapter
|
29
|
+
# assert_equal SmsGateway::Adapters::Test, SmsGateway::Base.adapter
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# def test_work_config_hash
|
33
|
+
# SmsGateway::Base.config = {
|
34
|
+
# :from => 'new_from',
|
35
|
+
# :user => 'new_user',
|
36
|
+
# :password => 'new_password',
|
37
|
+
# :adapter => 'sms_global'}
|
38
|
+
#
|
39
|
+
# assert_equal 'new_from', SmsGateway::Base.from
|
40
|
+
# assert_equal 'new_user', SmsGateway::Base.user
|
41
|
+
# assert_equal 'new_password', SmsGateway::Base.password
|
42
|
+
# assert_equal SmsGateway::Adapters::SmsGlobal, SmsGateway::Base.adapter
|
43
|
+
# end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class SmsGateway::Adapters::SmsGatewayTest < Test::Unit::TestCase
|
5
|
+
include SmsGateway
|
6
|
+
|
7
|
+
def setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_sms_gateway
|
11
|
+
|
12
|
+
SmsGateway::Base.config = {
|
13
|
+
:from => '493011111111',
|
14
|
+
:user => 'userid',
|
15
|
+
:password => 'secret',
|
16
|
+
:adapter => 'sms_global'
|
17
|
+
}
|
18
|
+
|
19
|
+
stub_request(:post, "http://www.smsglobal.com/http-api.php?action=sendsms&from=493011111111&password=secret&text=hello&to=493088888888&user=userid").
|
20
|
+
to_return(:status => 200, :body => "OK: 0;", :headers => {})
|
21
|
+
|
22
|
+
sms = Sms.new(:to => '493088888888',
|
23
|
+
:text => "hello")
|
24
|
+
|
25
|
+
sms.deliver
|
26
|
+
|
27
|
+
assert_requested(:post, "http://www.smsglobal.com/http-api.php?action=sendsms&from=493011111111&password=secret&text=hello&to=493088888888&user=userid")
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_sms_trade
|
32
|
+
|
33
|
+
SmsGateway::Base.config = {
|
34
|
+
:adapter => 'sms_trade',
|
35
|
+
:route => 'direct',
|
36
|
+
:key => 'KEY',
|
37
|
+
:from => 'SMSTRADE'
|
38
|
+
}
|
39
|
+
|
40
|
+
stub_request(:get, "http://gateway.smstrade.de/?from=SMSTRADE&key=KEY&message=Hello%20World&route=direct&to=491701234567").
|
41
|
+
to_return(:status => 200, :body => "", :headers => {})
|
42
|
+
|
43
|
+
sms = Sms.new(:to => '491701234567', :text => "Hello World")
|
44
|
+
|
45
|
+
sms.deliver
|
46
|
+
|
47
|
+
assert_requested(:get, "http://gateway.smstrade.de/?key=KEY&to=491701234567&message=Hello+World&route=direct&from=SMSTRADE")
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.2
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kai Rubarth
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
19
|
-
default_executable:
|
18
|
+
date: 2012-01-04 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: httparty
|
@@ -46,6 +45,20 @@ dependencies:
|
|
46
45
|
version: "0"
|
47
46
|
type: :runtime
|
48
47
|
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: webmock
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
49
62
|
description: Provides an interface to SMS Gateways. So far it supports smsglobal.com.
|
50
63
|
email:
|
51
64
|
- kai@doxter.de
|
@@ -62,6 +75,7 @@ files:
|
|
62
75
|
- Rakefile
|
63
76
|
- lib/sms_gateway.rb
|
64
77
|
- lib/sms_gateway/adapters/sms_global.rb
|
78
|
+
- lib/sms_gateway/adapters/sms_trade.rb
|
65
79
|
- lib/sms_gateway/adapters/test.rb
|
66
80
|
- lib/sms_gateway/base.rb
|
67
81
|
- lib/sms_gateway/generators/install/install_generator.rb
|
@@ -71,7 +85,9 @@ files:
|
|
71
85
|
- lib/sms_gateway/sms.rb
|
72
86
|
- lib/sms_gateway/version.rb
|
73
87
|
- sms_gateway.gemspec
|
74
|
-
|
88
|
+
- test/configuration_test.rb
|
89
|
+
- test/sms_gateway_test.rb
|
90
|
+
- test/test_helper.rb
|
75
91
|
homepage: ""
|
76
92
|
licenses: []
|
77
93
|
|
@@ -101,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
117
|
requirements: []
|
102
118
|
|
103
119
|
rubyforge_project: sms_gateway
|
104
|
-
rubygems_version: 1.
|
120
|
+
rubygems_version: 1.8.10
|
105
121
|
signing_key:
|
106
122
|
specification_version: 3
|
107
123
|
summary: Simple and flexible interface to SMS Gateways
|