smshelper 0.3.1 → 0.4.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 CHANGED
@@ -1,5 +1,5 @@
1
1
  = smshelper
2
- A small utility library to do SMS-MT
2
+ A utility library to do SMS-MT
3
3
 
4
4
  == Currently supported providers:
5
5
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
@@ -32,6 +32,16 @@ module Smshelper
32
32
  raise NotImplementedError, "Aql does not implement status check"
33
33
  end
34
34
 
35
+ def get_callback_response(args = {})
36
+ DeliveryReport.new(
37
+ :message_id => args['message_id'],
38
+ :timestamp => Time.now,
39
+ :delivered => ((args['status'] == '1') ? true : false),
40
+ :original_params => args
41
+ )
42
+ end
43
+
44
+ private
35
45
  def process_response_code(code)
36
46
  (code =~ /SMS successfuly queued/) ? true : false
37
47
  end
@@ -11,6 +11,37 @@ module Smshelper
11
11
  @response_code = ResponseCodes.new
12
12
  @extra_options = args.shift
13
13
  @uuid = UUID.new
14
+ class_factory 'DeliveryReport', 'InboundMessage', 'UnknownReply'
15
+ end
16
+
17
+ protected
18
+ def class_factory(*names)
19
+ names.each do |name|
20
+ klass = self.class.const_set(name, Class.new)
21
+ klass.class_eval do
22
+ attr_reader :uuid, :service
23
+
24
+ define_method(:initialize) do |args = {}|
25
+ args.each do |k,v|
26
+ unless k.to_s =~ (/splat/ || /captures/)
27
+ self.class.send(:define_method, k.to_sym) {v}
28
+ instance_variable_set("@"+k.to_s, v)
29
+ end
30
+ end
31
+ instance_variable_set("@uuid", UUID.generate)
32
+ instance_variable_set("@service", self.class.name.split('::')[2])
33
+ end
34
+
35
+ # define_method("marshal_dump".to_sym) do
36
+ # self.to_yaml
37
+ # end
38
+
39
+ # define_method("marshal_load".to_sym) do |yaml|
40
+ # YAML.load(yaml)
41
+ # end
42
+
43
+ end
44
+ end
14
45
  end
15
46
  end
16
47
  end
@@ -41,6 +41,16 @@ module Smshelper
41
41
  {message_id => @sent_message_statuses[message_id]}
42
42
  end
43
43
 
44
+ def get_callback_response(args = {})
45
+ DeliveryReport.new(
46
+ :message_id => args['batch_id'],
47
+ :timestamp => Time.now,
48
+ :delivered => ((args['status'] == '11') ? true : false),
49
+ :status => @response_code.bulksms(args['status']),
50
+ :original_params => args
51
+ )
52
+ end
53
+
44
54
  private
45
55
  def process_response_code(code)
46
56
  (code == '0') ? true : false
@@ -1,6 +1,7 @@
1
1
  module Smshelper
2
2
  module Api
3
- class Esendex < Base
3
+ class Esendex < Api::Base
4
+
4
5
  INBOX_SERVICE_WSDL = 'https://www.esendex.com/secure/messenger/soap/InboxService.asmx?wsdl'
5
6
  SEND_SERVICE_WSDL = 'https://www.esendex.com/secure/messenger/soap/SendService.asmx?wsdl'
6
7
  ACCOUNT_SERVICE_WSDL = 'https://www.esendex.com/secure/messenger/soap/AccountService.asmx?wsdl'
@@ -60,6 +61,29 @@ module Smshelper
60
61
  end
61
62
  end
62
63
 
64
+ # This expects a sinatra style params.merge(:request_body => request.body.read.to_s)
65
+ def get_callback_response(args = {})
66
+ if args['notificationType'] == 'MessageReceived'
67
+ InboundMessage.new(
68
+ :message_id => args['id'],
69
+ :sender => args['originator'],
70
+ :recipient => args['recipient'],
71
+ :text => args['body'],
72
+ :timestamp => Time.now,
73
+ :original_params => args
74
+ )
75
+ elsif args['notificationType'] == 'MessageEvent'
76
+ DeliveryReport.new(
77
+ :message_id => args['id'],
78
+ :timestamp => Time.now,
79
+ :delivered => ((args['eventType'] == 'Delivered') ? true : false),
80
+ :original_params => args
81
+ )
82
+ else
83
+ UnknownReply.new(args)
84
+ end
85
+ end
86
+
63
87
  private
64
88
  def connect(service)
65
89
  case service
@@ -31,6 +31,16 @@ module Smshelper
31
31
  raise NotImplementedError, "Sms status checks unsupported by #{self.class.name}"
32
32
  end
33
33
 
34
+ def get_callback_response(args = {})
35
+ DeliveryReport.new(
36
+ :message_id => args['msg_id'],
37
+ :timestamp => Time.now,
38
+ :delivered => ((args['status'] =~ /DELIVRD/) ? true : false),
39
+ :original_params => args
40
+ )
41
+ end
42
+
43
+
34
44
  private
35
45
  def process_response_code(code)
36
46
  (code =~ /Error/) ? false : true
@@ -11,10 +11,10 @@ module Smshelper
11
11
 
12
12
  def send_message(message)
13
13
  options = {
14
- :number => message.recipient,
15
- :message => message.text,
16
- :senderid => message.sender,
17
- :function => 'sendSms'}
14
+ :number => message.recipient,
15
+ :message => message.text,
16
+ :senderid => message.sender,
17
+ :function => 'sendSms'}
18
18
  options = options.merge(@extra_options) unless @extra_options.nil?
19
19
  resp = JSON.parse(post 'api-socket.php', :extra_query => options)
20
20
  process_response_code(resp) ? (@sent_message_ids << resp['smsid']; resp['smsid']) : (raise ErrorDuringSend, resp)
@@ -28,6 +28,17 @@ module Smshelper
28
28
  JSON.parse(post 'api-socket.php', :extra_query => {:function => 'doHlrLookup', :number => number})
29
29
  end
30
30
 
31
+ def get_callback_response(args = {})
32
+ data = JSON.parse args[:request_body]
33
+ DeliveryReport.new(
34
+ :message_id => data['smsid'],
35
+ :timestamp => Time.now,
36
+ :delivered => ((data['status'] == 'SMS_STATUS_DELIVERED') ? true : false),
37
+ :original_params => args
38
+ )
39
+ end
40
+
41
+ private
31
42
  def process_response_code(code)
32
43
  code['success']
33
44
  end
@@ -32,6 +32,28 @@ module Smshelper
32
32
  def get_status(message_id)
33
33
  end
34
34
 
35
+ def get_callback_response(args = {})
36
+ if args['type']
37
+ InboundMessage.new(
38
+ :message_id => args['messageId'],
39
+ :sender => args['msisdn'],
40
+ :recipient => args['to'],
41
+ :text => args['text'],
42
+ :timestamp => Time.parse(args['message-timestamp']),
43
+ :original_params => args
44
+ )
45
+ elsif args['network-code']
46
+ DeliveryReport.new(
47
+ :message_id => args['messageId'],
48
+ :timestamp => Time.parse(args['message-timestamp']),
49
+ :delivered => ((args['status'] == 'delivered') ? true : false),
50
+ :original_params => args
51
+ )
52
+ else
53
+ UnknownReply.new(args)
54
+ end
55
+ end
56
+
35
57
  private
36
58
  def process_response_code(code)
37
59
  (code == '0') ? true : false
@@ -36,6 +36,15 @@ module Smshelper
36
36
  raise NotImplementedError, "Sms status checks unsupported by #{self.class.name}"
37
37
  end
38
38
 
39
+ def get_callback_response(args = {})
40
+ DeliveryReport.new(
41
+ :message_id => args['message_id'],
42
+ :timestamp => Time.now,
43
+ :delivered => ((args['status'] == 'DELIVERED') ? true : false),
44
+ :original_params => args
45
+ )
46
+ end
47
+
39
48
  private
40
49
  def process_response_code(code)
41
50
  (code == '100') ? true : false
@@ -25,6 +25,15 @@ module Smshelper
25
25
  @sent_message_statuses[message_id] << {"Part 01" => @api.message_status(message_id)}
26
26
  {message_id => @sent_message_statuses[message_id]}
27
27
  end
28
+
29
+ def get_callback_response(args = {})
30
+ DeliveryReport.new(
31
+ :message_id => args['message_id'],
32
+ :timestamp => Time.now,
33
+ :delivered => ((args['status'] =~ /d/) ? true : false),
34
+ :original_params => args
35
+ )
36
+ end
28
37
  end
29
38
  end
30
39
  end
data/lib/smshelper/api.rb CHANGED
@@ -1,9 +1,9 @@
1
- # require 'smshelper/api/smswarehouse'
2
- # require 'smshelper/api/routomessaging'
1
+ require 'hashie'
3
2
 
4
3
  module Smshelper
5
4
  module Api
6
5
  path = (File.dirname File.expand_path(__FILE__))
6
+ VERSION = '0.0.1'#File.read('blahblah')
7
7
 
8
8
  autoload :Base, "#{path}/api/base"
9
9
  autoload :ResponseCodes, "#{path}/api/response_codes"
@@ -1 +1,7 @@
1
- require 'smshelper/languagetools/languagetools'
1
+ module Smshelper
2
+ module Languagetools
3
+ path = (File.dirname File.expand_path(__FILE__))
4
+
5
+ autoload :Charset, "#{path}/languagetools/languagetools"
6
+ end
7
+ end
data/lib/smshelper.rb CHANGED
@@ -3,6 +3,7 @@ require 'digest/crc32'
3
3
  require 'savon'
4
4
  require 'textmagic'
5
5
  require 'json'
6
+ require 'time'
6
7
  require 'api_smith'
7
8
 
8
9
  module Smshelper
data/smshelper.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "smshelper"
8
- s.version = "0.3.1"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Voip Scout"]
12
- s.date = "2012-05-19"
12
+ s.date = "2012-05-26"
13
13
  s.description = "works www.bulksms.com, www.webtext.com, www.clickatell.com, www.textmagic.com, www.smstrade.eu, www.esendex.com, www.mediaburst.co.uk, www.nexmo.com, www.vianett.com, www.traitel.com.au, www.my-cool-sms.com, www.aql.com"
14
14
  s.email = "voipscout@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smshelper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-19 00:00:00.000000000 Z
12
+ date: 2012-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: api_smith
@@ -261,7 +261,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
261
261
  version: '0'
262
262
  segments:
263
263
  - 0
264
- hash: -3617912919464630746
264
+ hash: 1710997261661198984
265
265
  required_rubygems_version: !ruby/object:Gem::Requirement
266
266
  none: false
267
267
  requirements: