smshelper 0.3.1 → 0.4.0

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