exetel_sms 1.02 → 1.03

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v1.03. Support message retrieval (check sent status). Update hostname.
2
+
1
3
  v1.02. Fixed requirements for gem
2
4
 
3
5
  v1.01. Initial version
data/Manifest CHANGED
@@ -9,5 +9,6 @@ lib/config.rb
9
9
  lib/deleter.rb
10
10
  lib/exetel_sms.rb
11
11
  lib/receiver.rb
12
+ lib/retriever.rb
12
13
  lib/sender.rb
13
14
  Manifest
data/README CHANGED
@@ -2,30 +2,46 @@
2
2
  exetel_sms: Send and receive messages via Exetel's SMS API
3
3
  -----------------------------------------------------------
4
4
 
5
- require 'exetel_sms/sender'
6
- require 'exetel_sms/config'
5
+ gem install 'exetel_sms'
6
+
7
7
 
8
8
  Send a message:
9
9
  --------------
10
-
10
+ require 'exetel_sms'
11
11
  config = ExetelSms::Config.new('username', 'password')
12
12
  sender = ExetelSms::Sender.new(config)
13
13
  result = sender.send(
14
- destination_mobile_number,
15
- message,
16
- from_string,
17
- sender.class.new_reference_number(reference_number)
14
+ 'destination mobile number',
15
+ 'message',
16
+ 'from string',
17
+ sender.class.new_reference_number('application_identifier')
18
18
  )
19
-
20
- if result[:status] == '1'
21
- puts "Message sent successfully!"
19
+ if result.success?
20
+ puts "Message sent successfully!"
22
21
  else
23
- puts "Error sending message: #{result[:notes]}"
22
+ puts "Error sending message: #{result[:notes]}"
24
23
  end
25
24
 
26
25
 
27
- Contact
28
- -------
26
+
27
+ Was it really sent?
28
+ -------------------
29
+ retriever = ExetelSms::Retriever.new(config)
30
+ result = retriever.check_sent('reference_number')
31
+ result[:message_status]
32
+ => 'Sent'
33
+
34
+
35
+ Receiving messages from a Virtual Mobile Number
36
+ -----------------------------------------------
37
+ receiver = ExetelSms::Receiver.new(config)
38
+ if result = receiver.receive('my virtual mobile number')
39
+ puts "Received from #{result[:from_mobile_number]}: #{result[:message]}"
40
+ end
41
+
42
+
43
+ Contact the author
44
+ ------------------
29
45
 
30
46
  Andrew Snow <andrew@modulus.org>
31
47
  Andys^ on irc.freenode.net
data/README.textile CHANGED
@@ -1,27 +1,47 @@
1
1
 
2
2
  h2. exetel_sms: Send and receive messages via Exetel's SMS API
3
3
 
4
- bc. require 'exetel_sms/sender'
5
- require 'exetel_sms/config'
4
+ bc. gem install 'exetel_sms'
5
+
6
6
 
7
7
  h3. Send a message:
8
8
 
9
- bc. config = ExetelSms::Config.new('username', 'password')
9
+ bc. require 'exetel_sms'
10
+ config = ExetelSms::Config.new('username', 'password')
10
11
  sender = ExetelSms::Sender.new(config)
11
12
  result = sender.send(
12
- destination_mobile_number,
13
- message,
14
- from_string,
15
- sender.class.new_reference_number(reference_number)
13
+ 'destination mobile number',
14
+ 'message',
15
+ 'from string',
16
+ sender.class.new_reference_number('application_identifier')
16
17
  )
17
- if result[:status] == '1'
18
- puts "Message sent successfully!"
18
+ if result.success?
19
+ puts "Message sent successfully!"
19
20
  else
20
- puts "Error sending message: #{result[:notes]}"
21
+ puts "Error sending message: #{result[:notes]}"
21
22
  end
22
23
 
23
24
 
24
- h3. Contact
25
+
26
+ h3. Was it really sent?
27
+
28
+ bc. retriever = ExetelSms::Retriever.new(config)
29
+ result = retriever.check_sent('reference_number')
30
+ result[:message_status]
31
+ #=> 'Sent' / 'Delivered' / 'Queued' / 'Failed'
32
+
33
+
34
+ h3. Receiving messages from a Virtual Mobile Number
35
+
36
+ bc. receiver = ExetelSms::Receiver.new(config)
37
+ if result = receiver.receive('my virtual mobile number')
38
+ puts "Received from #{result[:from_mobile_number]}: #{result[:message]}"
39
+ end
40
+
41
+
42
+
43
+
44
+ h3. Contact the author
25
45
 
26
46
  Andrew Snow <andrew@modulus.org>
27
47
  Andys^ on irc.freenode.net
data/exetel_sms.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{exetel_sms}
5
- s.version = "1.02"
5
+ s.version = "1.03"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Andrew Snow"]
9
- s.date = %q{2010-08-25}
9
+ s.date = %q{2011-01-28}
10
10
  s.description = %q{Ruby gem to send and receive SMS via Exetel's API}
11
11
  s.email = %q{andrew@modulus.org}
12
- s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "README.textile", "lib/class_methods.rb", "lib/client.rb", "lib/config.rb", "lib/deleter.rb", "lib/exetel_sms.rb", "lib/receiver.rb", "lib/sender.rb"]
13
- s.files = ["CHANGELOG", "LICENSE", "README", "README.textile", "Rakefile", "lib/class_methods.rb", "lib/client.rb", "lib/config.rb", "lib/deleter.rb", "lib/exetel_sms.rb", "lib/receiver.rb", "lib/sender.rb", "Manifest", "exetel_sms.gemspec"]
12
+ s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "README.textile", "lib/class_methods.rb", "lib/client.rb", "lib/config.rb", "lib/deleter.rb", "lib/exetel_sms.rb", "lib/receiver.rb", "lib/retriever.rb", "lib/sender.rb"]
13
+ s.files = ["CHANGELOG", "LICENSE", "README", "README.textile", "Rakefile", "lib/class_methods.rb", "lib/client.rb", "lib/config.rb", "lib/deleter.rb", "lib/exetel_sms.rb", "lib/receiver.rb", "lib/retriever.rb", "lib/sender.rb", "Manifest", "exetel_sms.gemspec"]
14
14
  s.homepage = %q{}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Exetel_sms", "--main", "README"]
16
16
  s.require_paths = ["lib"]
data/lib/class_methods.rb CHANGED
@@ -21,10 +21,15 @@ module ExetelSms
21
21
  end
22
22
 
23
23
  def response_to_hash(fields)
24
- raise 'Missing fields in response body' unless fields.length >= response_fields.length
24
+ raise "Missing fields in response body? Expected #{response_fields.map(&:to_s).join(',')}, got #{fields.inspect}" unless fields.length >= response_fields.length
25
25
  ret = {}
26
26
  response_fields.each {|field| ret[field] = fields.shift }
27
27
  ret[:other] = fields
28
+ class << ret
29
+ def success?
30
+ self[:status] == '1'
31
+ end
32
+ end
28
33
  ret
29
34
  end
30
35
 
data/lib/client.rb CHANGED
@@ -20,7 +20,7 @@ module ExetelSms
20
20
  body = response.body
21
21
  end
22
22
  raise "No body" unless body && body =~ /|/
23
- body.chomp.gsub(/<br>$/i, '').split('|').map {|str| str.strip }
23
+ body.chomp.gsub(/<br>$/i, '').split('|',-1).map {|str| str.strip }
24
24
  end
25
25
  end
26
26
  end
data/lib/deleter.rb CHANGED
@@ -31,7 +31,7 @@ module ExetelSms
31
31
  end
32
32
 
33
33
  def exetel_url
34
- 'https://www.exetel.com.au/sendsms/api_sms_mvn_delete.php?'
34
+ 'https://smsgw.exetel.com.au/sendsms/api_sms_mvn_delete.php?'
35
35
  end
36
36
 
37
37
  end
data/lib/exetel_sms.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- ['client', 'class_methods', 'sender', 'config', 'receiver', 'deleter'].each do |x|
2
+ ['client', 'class_methods', 'sender', 'config', 'receiver', 'deleter', 'retriever'].each do |x|
3
3
  require("#{File.dirname(__FILE__)}/" + x)
4
4
  end
5
5
 
data/lib/receiver.rb CHANGED
@@ -30,7 +30,7 @@ module ExetelSms
30
30
  end
31
31
 
32
32
  def exetel_url
33
- 'https://www.exetel.com.au/sendsms/api_sms_mvn_inbox.php?'
33
+ 'https://smsgw.exetel.com.au/sendsms/api_sms_mvn_inbox.php?'
34
34
  end
35
35
 
36
36
  end
data/lib/retriever.rb ADDED
@@ -0,0 +1,38 @@
1
+
2
+ module ExetelSms
3
+
4
+ class Retriever
5
+ extend ExetelSms::ClassMethods
6
+
7
+ attr_reader :config
8
+ def initialize(config)
9
+ @config = config
10
+ end
11
+
12
+ def check_sent(reference_number)
13
+ url = self.class.build_url(
14
+ :username => @config.username,
15
+ :password => @config.password,
16
+ :referencenumber => reference_number
17
+ )
18
+
19
+ self.class.response_to_hash(ExetelSms::Client.request(url))
20
+ end
21
+
22
+ class << self
23
+
24
+ def response_fields
25
+ [:status, :exetel_id, :reference_number, :sender, :to_mobile_number, :received_at, :message_status, :charge, :notes]
26
+ end
27
+
28
+ def request_fields
29
+ [:username, :password, :referencenumber]
30
+ end
31
+
32
+ def exetel_url
33
+ 'https://smsgw.exetel.com.au/sendsms/api_sms_detail.php?'
34
+ end
35
+
36
+ end
37
+ end
38
+ end
data/lib/sender.rb CHANGED
@@ -22,7 +22,7 @@ module ExetelSms
22
22
 
23
23
  self.class.response_to_hash(ExetelSms::Client.request(url))
24
24
  end
25
-
25
+
26
26
  class << self
27
27
 
28
28
  def response_fields
@@ -34,7 +34,7 @@ module ExetelSms
34
34
  end
35
35
 
36
36
  def exetel_url
37
- 'https://www.exetel.com.au/sendsms/api_sms.php?'
37
+ 'https://smsgw.exetel.com.au/sendsms/api_sms.php?'
38
38
  #username=xxxxxxxx&password=xxxxxxxx&mobilenumber=xxxxxxxx&message=xxxxxxxx&sender=xxxxxxxxx&messagetype=Text&referencenumber=xxxxxx'
39
39
  end
40
40
 
metadata CHANGED
@@ -1,12 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exetel_sms
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
4
  prerelease: false
6
5
  segments:
7
6
  - 1
8
- - 2
9
- version: "1.02"
7
+ - 3
8
+ version: "1.03"
10
9
  platform: ruby
11
10
  authors:
12
11
  - Andrew Snow
@@ -14,7 +13,7 @@ autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
15
 
17
- date: 2010-08-25 00:00:00 +10:00
16
+ date: 2011-01-28 00:00:00 +11:00
18
17
  default_executable:
19
18
  dependencies: []
20
19
 
@@ -35,6 +34,7 @@ extra_rdoc_files:
35
34
  - lib/deleter.rb
36
35
  - lib/exetel_sms.rb
37
36
  - lib/receiver.rb
37
+ - lib/retriever.rb
38
38
  - lib/sender.rb
39
39
  files:
40
40
  - CHANGELOG
@@ -48,6 +48,7 @@ files:
48
48
  - lib/deleter.rb
49
49
  - lib/exetel_sms.rb
50
50
  - lib/receiver.rb
51
+ - lib/retriever.rb
51
52
  - lib/sender.rb
52
53
  - Manifest
53
54
  - exetel_sms.gemspec
@@ -70,7 +71,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
72
  - - ">="
72
73
  - !ruby/object:Gem::Version
73
- hash: 3
74
74
  segments:
75
75
  - 0
76
76
  version: "0"
@@ -79,7 +79,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- hash: 11
83
82
  segments:
84
83
  - 1
85
84
  - 2