routo 0.0.2 → 0.0.3

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.
@@ -42,5 +42,11 @@ module Routo
42
42
  def self.send_sms msg, *numbers
43
43
  Message.new(msg).send_sms(*numbers)
44
44
  end
45
+
46
+ # not tested
47
+ def self.balance
48
+ balance = open("http://smsc5.routotelecom.com/balance.php?username=#{URI.encode(Routo.username)}=&password=#{URI.encode(Routo.password)}")
49
+ balance.to_i
50
+ end
45
51
 
46
52
  end
@@ -2,7 +2,8 @@ module Routo
2
2
 
3
3
  module Exception
4
4
  class Base < ::Exception
5
- def initialize msg
5
+ def initialize message, body
6
+ msg = "[number=#{message.recipients}] #{msg}"
6
7
  super(msg)
7
8
  end
8
9
  end
@@ -1,8 +1,8 @@
1
1
  module Routo
2
2
  module Exception
3
3
  class NoCreditsLeft < Base
4
- def initialize msg
5
- super(msg)
4
+ def initialize message, text
5
+ super(message, text)
6
6
  Pony.mail(:to => Routo.email, :subject => Routo.no_credits_left[:subject], :body => Routo.no_credits_left[:body]) if Routo.email && Routo.no_credits_left.present? && Routo.no_credits_left_sent_at.to_i<(Time.now.to_i-Routo.seconds_between_mails)
7
7
  Routo.no_credits_left_sent_at = Time.now
8
8
  end
@@ -3,6 +3,7 @@ module Routo
3
3
  class Message
4
4
 
5
5
  attr_accessor :text
6
+ attr_accessor :recipients
6
7
 
7
8
  def initialize text
8
9
  @text = text
@@ -11,25 +12,25 @@ module Routo
11
12
 
12
13
  def send_sms *numbers
13
14
  options = numbers.last.is_a?(Hash) ? numbers.last : {}
14
- recipients = numbers.map{|n| Number.new(n)}
15
+ @recipients = numbers.map{|n| Number.new(n)}
15
16
  begin
16
- parse_response(Net::HTTP.post_form(URI.parse(Routo.http_api_url), params(*recipients, options)))
17
+ parse_response(Net::HTTP.post_form(URI.parse(Routo.http_api_url), params(options)))
17
18
  rescue Routo::Exception::SystemError, Routo::Exception::Failed # trying with backup url if Routo returns an internal error
18
19
  begin # here a mail error should not prevent the sms to be send
19
20
  Pony.mail(:to => Routo.email, :subject => Routo.using_backup_url[:subject], :body => Routo.using_backup_url[:body]) if Routo.email && Routo.using_backup_url.present? && Routo.using_backup_url_sent_at.to_i<(Time.now.to_i-Routo.seconds_between_mails)
20
21
  Routo.using_backup_url_sent_at = Time.now
21
22
  ensure
22
- parse_response(Net::HTTP.post_form(URI.parse(Routo.http_api_url_backup), params(*recipients, options)))
23
+ parse_response(Net::HTTP.post_form(URI.parse(Routo.http_api_url_backup), params(options)))
23
24
  end
24
25
  end
25
26
  end
26
27
 
27
28
  private
28
29
 
29
- def params *number_objects, options
30
+ def params options
30
31
  {:user => Routo.username,
31
32
  :pass => URI.encode(Routo.password),
32
- :number => number_objects.map(&:number).join(','),
33
+ :number => @recipients.map(&:number).join(','),
33
34
  :ownnum => Routo.ownnum,
34
35
  :message => URI.encode(@text),
35
36
  :type => Routo.type,
@@ -47,21 +48,21 @@ module Routo
47
48
  Rails.logger.debug "msg: "+rep.message.inspect
48
49
  case rep.body
49
50
  when /success/i then return true
50
- when /error/i then raise Routo::Exception::Error.new(rep.body)
51
- when /auth_failed/i then raise Routo::Exception::AuthFailed.new(rep.body)
52
- when /wrong_number/i then raise Routo::Exception::WrongNumber.new(rep.body)
53
- when /not_allowed/i then raise Routo::Exception::NotAllowed.new(rep.body)
54
- when /too_many_numbers/i then raise Routo::Exception::TooManyNumbers.new(rep.body)
55
- when /no_message/i then raise Routo::Exception::NoMessage.new(rep.body)
56
- when /too_long/i then raise Routo::Exception::TooLong.new(rep.body)
57
- when /wrong_type/i then raise Routo::Exception::WrongType.new(rep.body)
58
- when /wrong_message/i then raise Routo::Exception::WrongMessage.new(rep.body)
59
- when /wrong_format/i then raise Routo::Exception::WrongFormat.new(rep.body)
60
- when /bad_operator/i then raise Routo::Exception::BadOperator.new(rep.body)
61
- when /failed/i then raise Routo::Exception::Failed.new(rep.body)
62
- when /sys_error/i then raise Routo::Exception::SystemError.new(rep.body)
63
- when /no credits left/i then raise Routo::Exception::NoCreditsLeft.new(rep.body)
64
- else raise Routo::Exception::Base.new(rep.body)
51
+ when /error/i then raise Routo::Exception::Error.new(self, rep.body)
52
+ when /auth_failed/i then raise Routo::Exception::AuthFailed.new(self, rep.body)
53
+ when /wrong_number/i then raise Routo::Exception::WrongNumber.new(self, rep.body)
54
+ when /not_allowed/i then raise Routo::Exception::NotAllowed.new(self, rep.body)
55
+ when /too_many_numbers/i then raise Routo::Exception::TooManyNumbers.new(self, rep.body)
56
+ when /no_message/i then raise Routo::Exception::NoMessage.new(self, rep.body)
57
+ when /too_long/i then raise Routo::Exception::TooLong.new(self, rep.body)
58
+ when /wrong_type/i then raise Routo::Exception::WrongType.new(self, rep.body)
59
+ when /wrong_message/i then raise Routo::Exception::WrongMessage.new(self, rep.body)
60
+ when /wrong_format/i then raise Routo::Exception::WrongFormat.new(self, rep.body)
61
+ when /bad_operator/i then raise Routo::Exception::BadOperator.new(self, rep.body)
62
+ when /failed/i then raise Routo::Exception::Failed.new(self, rep.body)
63
+ when /sys_error/i then raise Routo::Exception::SystemError.new(self, rep.body)
64
+ when /no credits left/i then raise Routo::Exception::NoCreditsLeft.new(self, rep.body)
65
+ else raise Routo::Exception::Base.new(self, rep.body)
65
66
  end
66
67
  end
67
68
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: routo
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Adrien Rambert
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-22 00:00:00 +01:00
13
+ date: 2011-03-23 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency