smsc_manager 0.3.6 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +3 -0
- data/Manifest.txt +9 -0
- data/bin/send_sms.rb +9 -11
- data/bin/send_sms_http.rb +64 -0
- data/bin/send_sms_load_test.rb +75 -0
- data/bin/sms_om_server.rb +20 -0
- data/bin/sms_om_server_control.rb +12 -0
- data/bin/sms_topic_server.rb +20 -0
- data/bin/sms_topic_server_control.rb +12 -0
- data/lib/smsc_manager/broadcast.rb +7 -4
- data/lib/smsc_manager/sms.rb +25 -1
- data/lib/smsc_manager/sms_send_topic.rb +24 -0
- data/lib/smsc_manager/sms_statistics_listener.rb +51 -0
- data/lib/smsc_manager/smsc_listener.rb +40 -0
- data/lib/smsc_manager/version.rb +2 -2
- data/test/smsc_manager_test.rb +9 -0
- metadata +25 -7
data/CHANGELOG.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -7,8 +7,17 @@ config/smsc.yml
|
|
7
7
|
bin/smsc_config.rb
|
8
8
|
bin/smsc_print_config.rb
|
9
9
|
bin/send_sms.rb
|
10
|
+
bin/send_sms_load_test.rb
|
11
|
+
bin/send_sms_http.rb
|
12
|
+
bin/sms_topic_server.rb
|
13
|
+
bin/sms_topic_server_control.rb
|
14
|
+
bin/sms_om_server_control.rb
|
15
|
+
bin/sms_om_server.rb
|
10
16
|
lib/smsc_manager/version.rb
|
11
17
|
lib/smsc_manager/sms.rb
|
18
|
+
lib/smsc_manager/smsc_listener.rb
|
19
|
+
lib/smsc_manager/sms_statistics_listener.rb
|
20
|
+
lib/smsc_manager/sms_send_topic.rb
|
12
21
|
lib/smsc_manager/broadcast.rb
|
13
22
|
lib/smsc_manager/smsc_connection.rb
|
14
23
|
lib/smsc_manager.rb
|
data/bin/send_sms.rb
CHANGED
@@ -40,24 +40,22 @@ require 'rubygems'
|
|
40
40
|
gem 'smsc_manager'
|
41
41
|
require 'smsc_manager'
|
42
42
|
|
43
|
-
puts "Finding
|
43
|
+
puts "Finding sms topic to use:"
|
44
44
|
begin
|
45
|
-
|
45
|
+
sms_sender=SmscManager::SmsSendTopic.new
|
46
46
|
rescue Exception => e
|
47
|
-
puts "exception found"
|
48
|
-
end
|
49
|
-
puts "Found smsc: #{smsc.hostname} port #{smsc.port}"
|
50
|
-
|
47
|
+
puts "exception found #{e.backtrace}"
|
48
|
+
end
|
51
49
|
user=arg_hash[:user]
|
52
50
|
destination=arg_hash[:msisdn]
|
53
51
|
source=arg_hash[:source]
|
54
52
|
text=arg_hash[:text]
|
55
|
-
|
53
|
+
sms_sender.send_sms(text,destination,source)
|
56
54
|
puts "Sending user: #{user} destination: #{destination} text: #{text}"
|
57
|
-
|
55
|
+
# res= smsc.send(sms)
|
58
56
|
# puts "Response code: #{res.response} body: #{res.response_body}"
|
59
|
-
|
60
|
-
|
61
|
-
|
57
|
+
# puts "Response code: #{res}" if res.kind_of? String
|
58
|
+
# puts "pretty print response:"
|
59
|
+
# pp res
|
62
60
|
# puts "Response code: #{res.} body: #{res.code}" if res.kind_of? Net::Http
|
63
61
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
def usage
|
4
|
+
puts "Usage: send_sms_http.rb -u user -m msisdn -s source -t text "
|
5
|
+
puts " to send via http directly to server"
|
6
|
+
puts "or for example send_sms_http.rb --user etc."
|
7
|
+
exit
|
8
|
+
end
|
9
|
+
def parse_options(params)
|
10
|
+
opts = OptionParser.new
|
11
|
+
puts "argv are #{params}"
|
12
|
+
#params_split = params.split(' ')
|
13
|
+
#puts "paramsp is #{paramsp}"
|
14
|
+
user_flag=msisdn_flag=source_flag=text_flag=true
|
15
|
+
temp_hash = {}
|
16
|
+
opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val
|
17
|
+
puts "user is #{val}"
|
18
|
+
user_flag=false }
|
19
|
+
opts.on("-m","--msisdn VAL", String) {|val| temp_hash[:msisdn ] = val
|
20
|
+
puts "msiddn is #{val}"
|
21
|
+
msisdn_flag=false }
|
22
|
+
opts.on("-s","--source VAL", String) {|val| temp_hash[:source ] = val
|
23
|
+
puts "source is #{val}"
|
24
|
+
source_flag=false }
|
25
|
+
opts.on("-t","--text VAL", String) {|val| temp_hash[:text ] = val
|
26
|
+
puts "text is #{val}"
|
27
|
+
text_flag=false }
|
28
|
+
#opts.on("-d","--database VAL", String) {|val| temp_hash[:db ] = val }
|
29
|
+
#opts.on("-p","--password VAL", String) {|val| temp_hash[:password ] = val }
|
30
|
+
#opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val }
|
31
|
+
#puts " in test commander option parse #{port} #{url}"
|
32
|
+
opts.parse(params)
|
33
|
+
# puts " in HTTP #{hostname} port #{port} url: #{url}"
|
34
|
+
usage if user_flag or msisdn_flag or source_flag or text_flag
|
35
|
+
return temp_hash
|
36
|
+
end
|
37
|
+
arg_hash=parse_options(ARGV)
|
38
|
+
require 'pp'
|
39
|
+
|
40
|
+
require 'rubygems'
|
41
|
+
gem 'smsc_manager'
|
42
|
+
require 'smsc_manager'
|
43
|
+
|
44
|
+
puts "Finding smsc to use:"
|
45
|
+
begin
|
46
|
+
smsc=SmscManager::SmscConnection.factory
|
47
|
+
rescue Exception => e
|
48
|
+
puts "exception found"
|
49
|
+
end
|
50
|
+
puts "Found smsc: #{smsc.hostname} port #{smsc.port}"
|
51
|
+
|
52
|
+
user=arg_hash[:user]
|
53
|
+
destination=arg_hash[:msisdn]
|
54
|
+
source=arg_hash[:source]
|
55
|
+
text=arg_hash[:text]
|
56
|
+
sms=SmscManager::Sms.new(text,destination,source)
|
57
|
+
puts "Sending user: #{user} destination: #{destination} text: #{text}"
|
58
|
+
res= smsc.send(sms)
|
59
|
+
# puts "Response code: #{res.response} body: #{res.response_body}"
|
60
|
+
puts "Response code: #{res}" if res.kind_of? String
|
61
|
+
puts "pretty print response:"
|
62
|
+
pp res
|
63
|
+
# puts "Response code: #{res.} body: #{res.code}" if res.kind_of? Net::Http
|
64
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
def usage
|
4
|
+
puts "Usage: send_sms_load_test.rb -u user -m msisdn -s source -t text -c count"
|
5
|
+
puts "to test how long to send c sms"
|
6
|
+
exit
|
7
|
+
end
|
8
|
+
def parse_options(params)
|
9
|
+
opts = OptionParser.new
|
10
|
+
puts "argv are #{params}"
|
11
|
+
#params_split = params.split(' ')
|
12
|
+
#puts "paramsp is #{paramsp}"
|
13
|
+
user_flag=msisdn_flag=source_flag=text_flag=count_flag=true
|
14
|
+
temp_hash = {}
|
15
|
+
opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val
|
16
|
+
puts "user is #{val}"
|
17
|
+
user_flag=false }
|
18
|
+
|
19
|
+
opts.on("-c","--count VAL", Integer) {|val| temp_hash[:count ] = val
|
20
|
+
puts "count is #{val}"
|
21
|
+
count_flag=false }
|
22
|
+
opts.on("-m","--msisdn VAL", String) {|val| temp_hash[:msisdn ] = val
|
23
|
+
puts "msiddn is #{val}"
|
24
|
+
msisdn_flag=false }
|
25
|
+
opts.on("-s","--source VAL", String) {|val| temp_hash[:source ] = val
|
26
|
+
puts "source is #{val}"
|
27
|
+
source_flag=false }
|
28
|
+
opts.on("-t","--text VAL", String) {|val| temp_hash[:text ] = val
|
29
|
+
puts "text is #{val}"
|
30
|
+
text_flag=false }
|
31
|
+
#opts.on("-d","--database VAL", String) {|val| temp_hash[:db ] = val }
|
32
|
+
#opts.on("-p","--password VAL", String) {|val| temp_hash[:password ] = val }
|
33
|
+
#opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val }
|
34
|
+
#puts " in test commander option parse #{port} #{url}"
|
35
|
+
opts.parse(params)
|
36
|
+
# puts " in HTTP #{hostname} port #{port} url: #{url}"
|
37
|
+
usage if user_flag or msisdn_flag or source_flag or text_flag or count_flag
|
38
|
+
return temp_hash
|
39
|
+
end
|
40
|
+
arg_hash=parse_options(ARGV)
|
41
|
+
require 'pp'
|
42
|
+
|
43
|
+
require 'rubygems'
|
44
|
+
gem 'smsc_manager'
|
45
|
+
require 'smsc_manager'
|
46
|
+
|
47
|
+
puts "Finding sms topic to use:"
|
48
|
+
begin
|
49
|
+
sms_sender=SmscManager::SmsSendTopic.new
|
50
|
+
rescue Exception => e
|
51
|
+
puts "exception found #{e.backtrace}"
|
52
|
+
end
|
53
|
+
user=arg_hash[:user]
|
54
|
+
destination=arg_hash[:msisdn]
|
55
|
+
source=arg_hash[:source]
|
56
|
+
text=arg_hash[:text]
|
57
|
+
count=arg_hash[:count]
|
58
|
+
start=Time.now
|
59
|
+
puts "Time now: #{start}"
|
60
|
+
1.upto(count) { |c|
|
61
|
+
puts "sent #{c} messages" if c % 100 == 0
|
62
|
+
final_text = "count: #{c}: #{text} "
|
63
|
+
sms_sender.send_sms(final_text,destination,source)
|
64
|
+
}
|
65
|
+
diff = Time.now - start
|
66
|
+
|
67
|
+
puts "#{Time.now} Sent #{count} in #{diff} seconds";
|
68
|
+
# puts "Sending user: #{user} destination: #{destination} text: #{text}"
|
69
|
+
# res= smsc.send(sms)
|
70
|
+
# puts "Response code: #{res.response} body: #{res.response_body}"
|
71
|
+
# puts "Response code: #{res}" if res.kind_of? String
|
72
|
+
# puts "pretty print response:"
|
73
|
+
# pp res
|
74
|
+
# puts "Response code: #{res.} body: #{res.code}" if res.kind_of? Net::Http
|
75
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
def usage
|
4
|
+
puts "Usage: sms_topic_server.rb to start up listener "
|
5
|
+
exit
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'rubygems'
|
9
|
+
gem 'smsc_manager'
|
10
|
+
require 'smsc_manager'
|
11
|
+
|
12
|
+
puts "Starting Operational Measurement (OM) server:"
|
13
|
+
# begin
|
14
|
+
sms_listener=SmscManager::SmsStatisticsListener.new.run
|
15
|
+
sms_listener.join
|
16
|
+
# rescue Exception => e
|
17
|
+
puts "exception found #{e.backtrace}"
|
18
|
+
# end
|
19
|
+
|
20
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
def usage
|
4
|
+
puts "Usage: sms_topic_server.rb to start up listener "
|
5
|
+
exit
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'rubygems'
|
9
|
+
gem 'smsc_manager'
|
10
|
+
require 'smsc_manager'
|
11
|
+
|
12
|
+
puts "Starting topic server:"
|
13
|
+
# begin
|
14
|
+
sms_listener=SmscManager::SmscListener.new.run
|
15
|
+
sms_listener.join
|
16
|
+
# rescue Exception => e
|
17
|
+
puts "exception found #{e.backtrace}"
|
18
|
+
# end
|
19
|
+
|
20
|
+
|
@@ -40,10 +40,11 @@ class Broadcast
|
|
40
40
|
puts "text is #{txt2} dest is #{dst}"
|
41
41
|
begin
|
42
42
|
sms=SmscManager::Sms.new(txt2,dst,self.source)
|
43
|
+
@list_queue << sms
|
43
44
|
rescue Exception => e
|
44
45
|
puts "bad values dst: #{dst} txt: #{txt2} msg: #{e.message}"
|
45
46
|
end
|
46
|
-
|
47
|
+
|
47
48
|
# puts " dst is #{dst}"
|
48
49
|
}
|
49
50
|
puts "populate queue list size #{@list_queue.size}"
|
@@ -68,8 +69,10 @@ class Broadcast
|
|
68
69
|
#puts " #{Time.now}Creating retry thread: #{ctmp}"
|
69
70
|
begin
|
70
71
|
sms = @list_queue.pop
|
71
|
-
|
72
|
-
|
72
|
+
if sms!=nil
|
73
|
+
puts "Thread #{ctmp} destination: #{sms.destination} text: #{sms.text}"
|
74
|
+
self.send_sms(smsc,sms)
|
75
|
+
end
|
73
76
|
end until @list_queue.empty?
|
74
77
|
}
|
75
78
|
end
|
@@ -85,7 +88,7 @@ class Broadcast
|
|
85
88
|
rescue Exception => e
|
86
89
|
puts "Exception found #{e.message}"
|
87
90
|
ensure
|
88
|
-
|
91
|
+
sleep(1)
|
89
92
|
end
|
90
93
|
end
|
91
94
|
end
|
data/lib/smsc_manager/sms.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'rexml/document'
|
1
2
|
# Sms stuff for handling sms
|
2
3
|
module SmscManager
|
3
4
|
class InvalidPrefix < RuntimeError
|
@@ -35,8 +36,30 @@ class Sms
|
|
35
36
|
flag=true if k }
|
36
37
|
flag
|
37
38
|
end
|
39
|
+
def to_xml
|
40
|
+
sms_xml = REXML::Element.new "sms"
|
41
|
+
destination_xml = REXML::Element.new "destination"
|
42
|
+
destination_xml.text=self.destination
|
43
|
+
source_xml =REXML::Element.new "source"
|
44
|
+
source_xml.text=self.source
|
45
|
+
text_xml =REXML::Element.new "text"
|
46
|
+
text_xml.text=self.text
|
47
|
+
sms_xml.add_element destination_xml
|
48
|
+
sms_xml.add_element source_xml
|
49
|
+
sms_xml.add_element text_xml
|
50
|
+
sms_xml.to_s
|
51
|
+
# doc= REXML::Document.new sms_xml.to_s
|
52
|
+
# doc.to_s
|
53
|
+
end
|
54
|
+
def self.load_xml(xml_string)
|
55
|
+
doc=REXML::Document.new(xml_string)
|
56
|
+
dest=REXML::XPath.first(doc, "//destination").text
|
57
|
+
src=REXML::XPath.first(doc, "//source").text
|
58
|
+
text=REXML::XPath.first(doc, "//text").text
|
59
|
+
sms=SmscManager::Sms.new(text,dest,src)
|
60
|
+
end
|
38
61
|
def limit_text(val)
|
39
|
-
#limit to
|
62
|
+
#limit to @@MAX_SIZE characters
|
40
63
|
ret=""
|
41
64
|
size=[val.size,@@MAX_SIZE].min-1
|
42
65
|
0.upto(size) do |i|
|
@@ -51,6 +74,7 @@ class Sms
|
|
51
74
|
# result=result.gsub(/\n/," ") # replace all new lines return result
|
52
75
|
# result=result.gsub(/\r/," ") # replace all new lines return result
|
53
76
|
result=result.gsub(/_/,"-") # replace all new lines return result
|
77
|
+
result=result.gsub(/-/," ") # replace all - with space...angelo bug return result
|
54
78
|
# result=result4.gsub(/\//,"") # replace all new lines return result
|
55
79
|
limit_text(result)
|
56
80
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'rubygems'
|
3
|
+
gem 'stomp'
|
4
|
+
require 'stomp'
|
5
|
+
# This sends the sms to a activemq topic
|
6
|
+
module SmscManager
|
7
|
+
class SmsSendTopic
|
8
|
+
attr_accessor :conn
|
9
|
+
#need to define topic, host properly
|
10
|
+
@@TOPIC='/topic/sms'
|
11
|
+
def initialize
|
12
|
+
self.conn = Stomp::Connection.open '', '', 'localhost', 61613, false
|
13
|
+
# self.conn.subscribe @@TOPIC, { :ack =>"auto" }
|
14
|
+
puts "finished initializing"
|
15
|
+
end
|
16
|
+
def send_sms(text,destination,source)
|
17
|
+
sms=SmscManager::Sms.new(text,destination,source)
|
18
|
+
msgbody=sms.to_xml
|
19
|
+
# puts "message body is #{msgbody}"
|
20
|
+
self.conn.send @@TOPIC, msgbody, {'persistent'=>'false'}
|
21
|
+
end #send_sms
|
22
|
+
end # smsc listener
|
23
|
+
|
24
|
+
end #module
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'rubygems'
|
3
|
+
gem 'stomp'
|
4
|
+
require 'stomp'
|
5
|
+
|
6
|
+
module SmscManager
|
7
|
+
class SmsStatisticsListener
|
8
|
+
@@MAX_THROUGHPUT =5 # in messages per second
|
9
|
+
attr_accessor :conn, :count, :source
|
10
|
+
#need to define topic, host properly
|
11
|
+
@@TOPIC='/topic/sms'
|
12
|
+
def initialize
|
13
|
+
self.conn = Stomp::Connection.open '', '', 'localhost', 61613, false
|
14
|
+
self.count = 0
|
15
|
+
self.conn.subscribe @@TOPIC, { :ack =>"auto" }
|
16
|
+
self.source ={}
|
17
|
+
puts "finished initializing"
|
18
|
+
end
|
19
|
+
def statistics(sms)
|
20
|
+
self.count+=1
|
21
|
+
self.source[sms.source] = 0 if !self.source.key?(sms.source)
|
22
|
+
self.source[sms.source] += 1
|
23
|
+
end
|
24
|
+
def report
|
25
|
+
puts "SMS OM Report: #{Time.now}"
|
26
|
+
puts "message count is: #{count}"
|
27
|
+
self.source.each_pair {|i,val|
|
28
|
+
puts " source #{i} count #{val}"
|
29
|
+
}
|
30
|
+
end
|
31
|
+
def run
|
32
|
+
Thread.new {
|
33
|
+
while true #loop forever
|
34
|
+
# puts "before receive"
|
35
|
+
msg = self.conn.receive
|
36
|
+
# puts "after receive"
|
37
|
+
begin
|
38
|
+
sms=SmscManager::Sms.load_xml(msg.body)
|
39
|
+
statistics(sms)
|
40
|
+
report if self.count % 100 == 0
|
41
|
+
# puts "sms text is: #{sms.text} dest is: #{sms.destination} result is: #{res}"
|
42
|
+
rescue Exception => e
|
43
|
+
puts "exception found #{e.backtrace}"
|
44
|
+
end
|
45
|
+
end # while
|
46
|
+
}
|
47
|
+
# t.join # wait for t to die..
|
48
|
+
end #run
|
49
|
+
end # smsc listener
|
50
|
+
|
51
|
+
end #module
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'rubygems'
|
3
|
+
gem 'stomp'
|
4
|
+
require 'stomp'
|
5
|
+
|
6
|
+
module SmscManager
|
7
|
+
class SmscListener
|
8
|
+
@@MAX_THROUGHPUT =5 # in messages per second
|
9
|
+
SLEEP_TIME=1/@@MAX_THROUGHPUT #sleep x seconds to slow down system
|
10
|
+
attr_accessor :conn, :smsc, :count
|
11
|
+
#need to define topic, host properly
|
12
|
+
@@TOPIC='/topic/sms'
|
13
|
+
def initialize
|
14
|
+
self.conn = Stomp::Connection.open '', '', 'localhost', 61613, false
|
15
|
+
self.count = 0
|
16
|
+
self.conn.subscribe @@TOPIC, { :ack =>"auto" }
|
17
|
+
self.smsc=SmscManager::SmscConnection.factory
|
18
|
+
puts "finished initializing"
|
19
|
+
end
|
20
|
+
def run
|
21
|
+
Thread.new {
|
22
|
+
while true #loop forever
|
23
|
+
# puts "before receive"
|
24
|
+
msg = self.conn.receive
|
25
|
+
# puts "after receive"
|
26
|
+
begin
|
27
|
+
sms=SmscManager::Sms.load_xml(msg.body)
|
28
|
+
res= self.smsc.send(sms)
|
29
|
+
sleep(SLEEP_TIME) #only 5 messages per second max
|
30
|
+
# puts "sms text is: #{sms.text} dest is: #{sms.destination} result is: #{res}"
|
31
|
+
rescue Exception => e
|
32
|
+
puts "exception found #{e.backtrace}"
|
33
|
+
end
|
34
|
+
end # while
|
35
|
+
}
|
36
|
+
# t.join # wait for t to die..
|
37
|
+
end #run
|
38
|
+
end # smsc listener
|
39
|
+
|
40
|
+
end #module
|
data/lib/smsc_manager/version.rb
CHANGED
data/test/smsc_manager_test.rb
CHANGED
@@ -6,6 +6,15 @@ class SmscManagerTest < Test::Unit::TestCase
|
|
6
6
|
@smsc=SmscManager::SmscConnection.factory
|
7
7
|
end
|
8
8
|
# Replace this with your real tests.
|
9
|
+
def test_sms_to_xml
|
10
|
+
sms=SmscManager::Sms.new('hello scott','09996557890','websource')
|
11
|
+
c=sms.to_xml
|
12
|
+
puts "sms to xml is #{c}"
|
13
|
+
assert_match "destination", c
|
14
|
+
sms2=SmscManager::Sms.load_xml(c)
|
15
|
+
assert sms.destination == sms2.destination, 'to from xml did not work'
|
16
|
+
assert sms.text == sms2.text, 'to from xml did not work'
|
17
|
+
end
|
9
18
|
def test_sms_send
|
10
19
|
smsc_new=@smsc
|
11
20
|
sms=SmscManager::Sms.new('hello scott','09996557890','websource')
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: smsc_manager
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.4.0
|
7
|
+
date: 2007-09-18 00:00:00 +08:00
|
8
8
|
summary: connection to smsc via http using kannel
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -38,8 +38,17 @@ files:
|
|
38
38
|
- bin/smsc_config.rb
|
39
39
|
- bin/smsc_print_config.rb
|
40
40
|
- bin/send_sms.rb
|
41
|
+
- bin/send_sms_load_test.rb
|
42
|
+
- bin/send_sms_http.rb
|
43
|
+
- bin/sms_topic_server.rb
|
44
|
+
- bin/sms_topic_server_control.rb
|
45
|
+
- bin/sms_om_server_control.rb
|
46
|
+
- bin/sms_om_server.rb
|
41
47
|
- lib/smsc_manager/version.rb
|
42
48
|
- lib/smsc_manager/sms.rb
|
49
|
+
- lib/smsc_manager/smsc_listener.rb
|
50
|
+
- lib/smsc_manager/sms_statistics_listener.rb
|
51
|
+
- lib/smsc_manager/sms_send_topic.rb
|
43
52
|
- lib/smsc_manager/broadcast.rb
|
44
53
|
- lib/smsc_manager/smsc_connection.rb
|
45
54
|
- lib/smsc_manager.rb
|
@@ -48,14 +57,23 @@ files:
|
|
48
57
|
- examples/receive_sms_controller.rb
|
49
58
|
test_files:
|
50
59
|
- test/smsc_manager_test.rb
|
51
|
-
rdoc_options:
|
52
|
-
|
53
|
-
|
54
|
-
|
60
|
+
rdoc_options:
|
61
|
+
- --main
|
62
|
+
- README.txt
|
63
|
+
extra_rdoc_files:
|
64
|
+
- README.txt
|
65
|
+
- CHANGELOG.txt
|
66
|
+
- Manifest.txt
|
55
67
|
executables:
|
56
68
|
- smsc_config.rb
|
57
69
|
- smsc_print_config.rb
|
58
70
|
- send_sms.rb
|
71
|
+
- send_sms_load_test.rb
|
72
|
+
- send_sms_http.rb
|
73
|
+
- sms_topic_server.rb
|
74
|
+
- sms_topic_server_control.rb
|
75
|
+
- sms_om_server_control.rb
|
76
|
+
- sms_om_server.rb
|
59
77
|
extensions: []
|
60
78
|
|
61
79
|
requirements: []
|