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