exetel_sms 1.02 → 1.03

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/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