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 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
- * other sms gateway providers
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.config
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
+
@@ -3,18 +3,34 @@ module SmsGateway
3
3
  class Base
4
4
 
5
5
  class << self
6
- attr_accessor :connection
7
- attr_reader :config
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
- klassname = @config[:adapter].to_s.split("_").map(&:capitalize).join
12
- klass = SmsGateway::Adapters.const_get(klassname)
13
- self.connection = klass.new
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.connection.send_sms(SmsGateway::Sms.new(options.symbolize_keys))
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])
@@ -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
@@ -1,3 +1,4 @@
1
1
  module SmsGateway
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
4
+
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
@@ -22,6 +22,8 @@ Gem::Specification.new do |s|
22
22
  s.add_dependency('httparty')
23
23
  s.add_dependency('resque')
24
24
 
25
+ s.add_development_dependency('webmock')
26
+
25
27
  end
26
28
 
27
29
 
@@ -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
+
@@ -0,0 +1,11 @@
1
+
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ require 'webmock/test_unit'
5
+
6
+ require 'sms_gateway'
7
+
8
+ class Test::Unit::TestCase
9
+ end
10
+
11
+
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
- - 2
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: 2011-06-20 00:00:00 -04:00
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
- has_rdoc: true
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.5.2
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