sms_gateway 0.2.1 → 0.3.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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Rakefile +1 -4
- data/lib/sms_gateway.rb +0 -3
- data/lib/sms_gateway/adapters/better_opener.rb +4 -12
- data/lib/sms_gateway/adapters/sms_global.rb +5 -12
- data/lib/sms_gateway/adapters/sms_trade.rb +6 -12
- data/lib/sms_gateway/adapters/test.rb +2 -10
- data/lib/sms_gateway/base.rb +10 -19
- data/lib/sms_gateway/generators/install/install_generator.rb +5 -12
- data/lib/sms_gateway/generators/install/templates/initializer.rb +1 -3
- data/lib/sms_gateway/jobs/sms_job.rb +0 -7
- data/lib/sms_gateway/sms.rb +4 -8
- data/lib/sms_gateway/version.rb +1 -2
- data/sms_gateway.gemspec +11 -14
- data/test/adapters/sms_global_test.rb +10 -17
- data/test/adapters/sms_trade_test.rb +19 -17
- data/test/adapters/test_adapter_test.rb +6 -15
- data/test/configuration_test.rb +3 -10
- data/test/test_helper.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 226fdbc0abcf8fcd5939ffb73aa5cc2285875867
|
4
|
+
data.tar.gz: a15faae3f38a8e0aed2bfae92770592299f369d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e9c1f059505b190e5f9241280ce860a3edbcc63d27100c7fb5fdba76c18a5ef79de4f858c1363ba777916cf2a13cd8945f73eb09b0908b1d35816ec7680abeb
|
7
|
+
data.tar.gz: 4e587f03217d8ebb0dec302a5c6d49be87aefca34b504bf0f04e919b95be4280d5015e3ab2f13b8ad825f19ac760560ba18e88170de2fcc20751a3a44f313119
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@ require 'rdoc/task'
|
|
4
4
|
|
5
5
|
Bundler::GemHelper.install_tasks
|
6
6
|
|
7
|
-
task :
|
7
|
+
task default: :test
|
8
8
|
|
9
9
|
desc 'Run unit tests'
|
10
10
|
Rake::TestTask.new(:test) do |test|
|
@@ -21,6 +21,3 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
21
21
|
rdoc.rdoc_files.include('README.rdoc')
|
22
22
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
23
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
data/lib/sms_gateway.rb
CHANGED
@@ -1,23 +1,15 @@
|
|
1
1
|
module SmsGateway
|
2
|
-
|
3
2
|
module Adapters
|
4
|
-
|
5
3
|
class BetterOpener
|
6
|
-
|
7
|
-
|
8
|
-
@config = {:from => SmsGateway::Base.from}
|
4
|
+
def initialize(config = {})
|
5
|
+
@config = { from: SmsGateway::Base.from }
|
9
6
|
@config.merge!(config)
|
10
7
|
end
|
11
8
|
|
12
9
|
def send_sms(sms)
|
13
|
-
options = @config.merge(
|
14
|
-
BetterOpener.add_notification(
|
10
|
+
options = @config.merge(to: sms.to, message: sms.text)
|
11
|
+
BetterOpener.add_notification('sms', sms.text, sms.text)
|
15
12
|
end
|
16
|
-
|
17
13
|
end
|
18
|
-
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
|
-
|
23
|
-
|
@@ -1,27 +1,20 @@
|
|
1
1
|
module SmsGateway
|
2
|
-
|
3
2
|
module Adapters
|
4
|
-
|
5
3
|
class SmsGlobal
|
6
4
|
require 'httparty'
|
7
5
|
include HTTParty
|
8
6
|
base_uri 'http://www.smsglobal.com'
|
9
7
|
|
10
|
-
def initialize(config={})
|
11
|
-
@config = {:
|
12
|
-
|
8
|
+
def initialize(config = {})
|
9
|
+
@config = { user: SmsGateway::Base.user, password: SmsGateway::Base.password,
|
10
|
+
from: SmsGateway::Base.from }
|
13
11
|
@config.merge!(config)
|
14
12
|
end
|
15
13
|
|
16
14
|
def send_sms(sms)
|
17
|
-
options = @config.merge(
|
18
|
-
self.class.post('/http-api.php', :
|
15
|
+
options = @config.merge(action: 'sendsms', from: sms.from, to: sms.to, text: sms.text)
|
16
|
+
self.class.post('/http-api.php', query: options)
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
|
-
|
23
19
|
end
|
24
|
-
|
25
20
|
end
|
26
|
-
|
27
|
-
|
@@ -1,28 +1,22 @@
|
|
1
1
|
module SmsGateway
|
2
|
-
|
3
2
|
module Adapters
|
4
|
-
|
5
3
|
class SmsTrade
|
6
4
|
require 'httparty'
|
7
5
|
include HTTParty
|
8
6
|
base_uri 'http://gateway.smstrade.de'
|
9
7
|
|
10
|
-
def initialize(config={})
|
11
|
-
@config = {:
|
8
|
+
def initialize(config = {})
|
9
|
+
@config = { key: SmsGateway::Base.key, from: SmsGateway::Base.from, route: SmsGateway::Base.route }
|
12
10
|
@config.merge!(config)
|
13
11
|
self.class.base_uri SmsGateway::Base.base_uri
|
14
12
|
end
|
15
13
|
|
16
14
|
def send_sms(sms)
|
17
|
-
options = @config.merge(
|
18
|
-
options.merge!(
|
19
|
-
|
15
|
+
options = @config.merge(from: sms.from, to: sms.to, message: sms.text, charset: 'UTF-8')
|
16
|
+
options.merge!(route: sms.route) if sms.route
|
17
|
+
options.merge!(dlr: 1) if sms.delivery_report
|
18
|
+
self.class.get('/', query: options)
|
20
19
|
end
|
21
|
-
|
22
20
|
end
|
23
|
-
|
24
21
|
end
|
25
|
-
|
26
22
|
end
|
27
|
-
|
28
|
-
|
@@ -1,8 +1,6 @@
|
|
1
1
|
|
2
2
|
module SmsGateway
|
3
|
-
|
4
3
|
class Base
|
5
|
-
|
6
4
|
class << self
|
7
5
|
attr_accessor :deliveries
|
8
6
|
end
|
@@ -10,23 +8,17 @@ module SmsGateway
|
|
10
8
|
@deliveries = []
|
11
9
|
end
|
12
10
|
|
13
|
-
|
14
11
|
module Adapters
|
15
|
-
|
16
12
|
class Test
|
17
|
-
|
18
13
|
attr_accessor :deliveries
|
19
14
|
|
20
|
-
def initialize(
|
21
|
-
|
15
|
+
def initialize(_config = {})
|
16
|
+
# @logger = Logger.new(STDOUT)
|
22
17
|
end
|
23
18
|
|
24
19
|
def send_sms(sms)
|
25
20
|
SmsGateway::Base.deliveries << sms
|
26
21
|
end
|
27
|
-
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
31
|
-
|
32
|
-
|
data/lib/sms_gateway/base.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module SmsGateway
|
2
|
-
|
3
2
|
class Base
|
4
|
-
|
5
3
|
class << self
|
6
4
|
attr_accessor :from, :user, :password, :key, :route, :base_uri
|
7
5
|
attr_reader :adapter
|
@@ -11,36 +9,29 @@ module SmsGateway
|
|
11
9
|
end
|
12
10
|
|
13
11
|
def adapter=(underscore_name)
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
klassname = underscore_name.split('_').map(&:capitalize).join
|
13
|
+
klass = SmsGateway::Adapters.const_get(klassname)
|
14
|
+
@adapter = klass.new
|
17
15
|
end
|
18
16
|
|
19
|
-
|
20
|
-
@config
|
21
|
-
end
|
17
|
+
attr_reader :config
|
22
18
|
|
23
19
|
def config=(options)
|
24
20
|
@config = options
|
25
21
|
adapter = @config.delete(:adapter)
|
26
|
-
@config.each do |k,v|
|
27
|
-
|
22
|
+
@config.each do |k, v|
|
23
|
+
send "#{k}=", v
|
28
24
|
end
|
29
|
-
self.adapter = adapter
|
25
|
+
self.adapter = adapter
|
30
26
|
end
|
31
27
|
|
32
28
|
def deliver(sms)
|
33
|
-
|
29
|
+
adapter.send_sms(sms)
|
34
30
|
end
|
35
31
|
|
36
|
-
def self.deliver_later(text, to, from=Base.config[:from])
|
37
|
-
Resque.enqueue(SmsGateway::Workers::SmsJob, text, to, from)
|
32
|
+
def self.deliver_later(text, to, from = Base.config[:from])
|
33
|
+
Resque.enqueue(SmsGateway::Workers::SmsJob, text, to, from)
|
38
34
|
end
|
39
|
-
|
40
35
|
end
|
41
36
|
end
|
42
|
-
|
43
37
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
@@ -2,26 +2,19 @@ require 'rails'
|
|
2
2
|
require 'rails/generators'
|
3
3
|
|
4
4
|
module SmsGateway
|
5
|
-
|
6
5
|
module Generators
|
7
|
-
|
8
6
|
class InstallGenerator < Rails::Generators::Base
|
9
|
-
source_root File.expand_path(
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
|
9
|
+
desc 'Creates the initializer and config file template.'
|
10
10
|
|
11
|
-
desc "Creates the initializer and config file template."
|
12
|
-
|
13
11
|
def copy_initializer_file
|
14
|
-
copy_file
|
12
|
+
copy_file 'initializer.rb', 'config/initializers/setup_sms_gateway.rb'
|
15
13
|
end
|
16
14
|
|
17
15
|
def copy_config_file
|
18
|
-
copy_file
|
16
|
+
copy_file 'setup.yml', 'config/sms_gateway.yml'
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
|
-
|
23
19
|
end
|
24
|
-
|
25
20
|
end
|
26
|
-
|
27
|
-
|
data/lib/sms_gateway/sms.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
## The SMS-Object
|
2
2
|
module SmsGateway
|
3
|
-
class Sms < Struct.new(:from, :to, :text, :route)
|
4
|
-
|
3
|
+
class Sms < Struct.new(:from, :to, :text, :route, :delivery_report)
|
5
4
|
def initialize(params)
|
6
|
-
self.from = params[:from]||SmsGateway::Base.from
|
5
|
+
self.from = params[:from] || SmsGateway::Base.from
|
7
6
|
self.to = params[:to]
|
8
7
|
self.text = params[:text]
|
9
8
|
self.route = params[:route]
|
9
|
+
self.delivery_report = params[:delivery_report]
|
10
10
|
end
|
11
11
|
|
12
12
|
def deliver
|
@@ -14,11 +14,7 @@ module SmsGateway
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def to_s
|
17
|
-
"SMS: from:#{
|
17
|
+
"SMS: from:#{from}, to:#{to}, text:#{text}"
|
18
18
|
end
|
19
|
-
|
20
19
|
end
|
21
20
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
data/lib/sms_gateway/version.rb
CHANGED
data/sms_gateway.gemspec
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require
|
2
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'sms_gateway/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
6
|
+
s.name = 'sms_gateway'
|
7
7
|
s.version = SmsGateway::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = [
|
10
|
-
s.email = [
|
11
|
-
s.homepage =
|
12
|
-
s.summary =
|
13
|
-
s.description =
|
9
|
+
s.authors = ['Kai Rubarth']
|
10
|
+
s.email = ['kai@doxter.de']
|
11
|
+
s.homepage = ''
|
12
|
+
s.summary = 'Simple and flexible interface to SMS Gateways'
|
13
|
+
s.description = 'Provides an interface to SMS Gateways. So far it supports smsglobal.com and smstrade.de'
|
14
14
|
|
15
|
-
s.rubyforge_project =
|
15
|
+
s.rubyforge_project = 'sms_gateway'
|
16
16
|
|
17
17
|
s.files = `git ls-files`.split("\n")
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
-
s.require_paths = [
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
20
|
+
s.require_paths = ['lib']
|
21
21
|
|
22
22
|
s.add_dependency('httparty')
|
23
23
|
|
@@ -25,7 +25,4 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_development_dependency('minitest')
|
26
26
|
s.add_development_dependency('pry')
|
27
27
|
s.add_development_dependency('webmock')
|
28
|
-
|
29
28
|
end
|
30
|
-
|
31
|
-
|
@@ -1,31 +1,24 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
describe SmsGateway::Adapters do
|
4
|
-
|
5
4
|
before do
|
6
|
-
SmsGateway::Base.config = {
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
5
|
+
SmsGateway::Base.config = {
|
6
|
+
from: '493011111111',
|
7
|
+
user: 'userid',
|
8
|
+
password: 'secret',
|
9
|
+
adapter: 'sms_global'
|
11
10
|
}
|
12
11
|
end
|
13
12
|
|
14
13
|
it 'works with sms global' do
|
14
|
+
stub_request(:post, 'http://www.smsglobal.com/http-api.php?action=sendsms&from=4930123456&password=secret&text=hello&to=493088888888&user=userid')
|
15
|
+
.to_return(status: 200, body: 'OK: 0;', headers: {})
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
sms = SmsGateway::Sms.new(:from => '4930123456', :to => '493088888888',
|
20
|
-
:text => "hello")
|
17
|
+
sms = SmsGateway::Sms.new(from: '4930123456', to: '493088888888',
|
18
|
+
text: 'hello')
|
21
19
|
|
22
20
|
sms.deliver
|
23
21
|
|
24
|
-
assert_requested(:post,
|
22
|
+
assert_requested(:post, 'http://www.smsglobal.com/http-api.php?action=sendsms&from=4930123456&password=secret&text=hello&to=493088888888&user=userid')
|
25
23
|
end
|
26
|
-
|
27
24
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
@@ -1,23 +1,21 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
describe SmsGateway::Adapters::SmsGlobal do
|
4
|
-
|
5
4
|
before do
|
6
5
|
SmsGateway::Base.config = {
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
6
|
+
adapter: 'sms_trade',
|
7
|
+
route: 'direct',
|
8
|
+
key: 'KEY',
|
9
|
+
from: 'SMSTRADE',
|
10
|
+
base_uri: 'http://gateway.smspromote.de'
|
12
11
|
}
|
13
12
|
end
|
14
13
|
|
15
14
|
it 'works with smstrade' do
|
15
|
+
sms = SmsGateway::Sms.new(to: '491701234567', text: 'Hallö Ümläut.', from: 'SENDER')
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
stub_request(:get, "http://gateway.smspromote.de/?charset=UTF-8&from=SENDER&key=KEY&message=#{URI.encode(sms.text)}&route=direct&to=491701234567").
|
20
|
-
to_return(:status => 200, :body => "", :headers => {})
|
17
|
+
stub_request(:get, "http://gateway.smspromote.de/?charset=UTF-8&from=SENDER&key=KEY&message=#{URI.encode(sms.text)}&route=direct&to=491701234567")
|
18
|
+
.to_return(status: 200, body: '', headers: {})
|
21
19
|
|
22
20
|
sms.deliver
|
23
21
|
|
@@ -25,20 +23,24 @@ describe SmsGateway::Adapters::SmsGlobal do
|
|
25
23
|
end
|
26
24
|
|
27
25
|
it 'allows changing the route on the fly' do
|
26
|
+
sms = SmsGateway::Sms.new(to: '491701234567', text: 'SMSTEXT', from: 'SENDER', route: 'basic')
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
stub_request(:get, "http://gateway.smspromote.de/?charset=UTF-8&from=SENDER&key=KEY&message=#{URI.encode(sms.text)}&route=basic&to=491701234567").
|
32
|
-
to_return(:status => 200, :body => "", :headers => {})
|
28
|
+
stub_request(:get, "http://gateway.smspromote.de/?charset=UTF-8&from=SENDER&key=KEY&message=#{URI.encode(sms.text)}&route=basic&to=491701234567")
|
29
|
+
.to_return(status: 200, body: '', headers: {})
|
33
30
|
|
34
31
|
sms.deliver
|
35
32
|
|
36
33
|
assert_requested(:get, "http://gateway.smspromote.de/?key=KEY&to=491701234567&message=#{URI.encode(sms.text)}&route=basic&from=SENDER&charset=UTF-8")
|
37
|
-
|
38
34
|
end
|
39
35
|
|
40
|
-
|
41
|
-
|
36
|
+
it 'request reports when configured' do
|
37
|
+
sms = SmsGateway::Sms.new(to: '491701234567', text: 'SMSTEXT', from: 'SENDER', route: 'basic', delivery_report: true)
|
42
38
|
|
39
|
+
stub_request(:get, 'http://gateway.smspromote.de/?charset=UTF-8&dlr=1&from=SENDER&key=KEY&message=SMSTEXT&route=basic&to=491701234567')
|
40
|
+
.to_return(status: 200, body: '', headers: {})
|
43
41
|
|
42
|
+
sms.deliver
|
44
43
|
|
44
|
+
assert_requested(:get, "http://gateway.smspromote.de/?key=KEY&to=491701234567&message=#{URI.encode(sms.text)}&route=basic&from=SENDER&charset=UTF-8&dlr=1")
|
45
|
+
end
|
46
|
+
end
|
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
describe SmsGateway::Adapters::Test do
|
4
|
-
|
5
4
|
it 'works with the test adapter' do
|
6
|
-
|
7
|
-
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:adapter => 'test'
|
5
|
+
SmsGateway::Base.config = {
|
6
|
+
from: '493011111111',
|
7
|
+
user: 'userid',
|
8
|
+
password: 'secret',
|
9
|
+
adapter: 'test'
|
12
10
|
}
|
13
11
|
|
14
|
-
sms = SmsGateway::Sms.new(:
|
12
|
+
sms = SmsGateway::Sms.new(to: '493088888888', text: 'hello')
|
15
13
|
|
16
14
|
assert_equal 0, SmsGateway::Base.deliveries.size
|
17
15
|
sms.deliver
|
@@ -19,12 +17,5 @@ describe SmsGateway::Adapters::Test do
|
|
19
17
|
|
20
18
|
SmsGateway::Base.deliveries = []
|
21
19
|
assert_equal [], SmsGateway::Base.deliveries
|
22
|
-
|
23
20
|
end
|
24
|
-
|
25
|
-
|
26
21
|
end
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
data/test/configuration_test.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
describe SmsGateway::Base do
|
4
|
-
|
5
4
|
before do
|
6
|
-
|
5
|
+
SmsGateway::Base.configure do |config|
|
7
6
|
config.from = '123456789'
|
8
7
|
config.user = 'some_user'
|
9
8
|
config.password = 'secret'
|
10
|
-
config.adapter = 'test'
|
9
|
+
config.adapter = 'test'
|
11
10
|
end
|
12
11
|
end
|
13
12
|
|
@@ -20,13 +19,7 @@ describe SmsGateway::Base do
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def test_parse_from
|
23
|
-
sms = SmsGateway::Sms.new(:
|
22
|
+
sms = SmsGateway::Sms.new(text: 'test')
|
24
23
|
assert_equal '123456789', sms.from
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sms_gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kai Rubarth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
132
|
rubyforge_project: sms_gateway
|
133
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.4.6
|
134
134
|
signing_key:
|
135
135
|
specification_version: 4
|
136
136
|
summary: Simple and flexible interface to SMS Gateways
|
@@ -140,3 +140,4 @@ test_files:
|
|
140
140
|
- test/adapters/test_adapter_test.rb
|
141
141
|
- test/configuration_test.rb
|
142
142
|
- test/test_helper.rb
|
143
|
+
has_rdoc:
|