Class: BallouSmsGateway
- Inherits:
-
Object
- Object
- BallouSmsGateway
- Defined in:
- lib/ballou_sms_gateway.rb
Instance Method Summary collapse
-
#from(sender) ⇒ Object
BallouSmsGateway.
-
#initialize ⇒ BallouSmsGateway
constructor
A new instance of BallouSmsGateway.
- #long ⇒ Object
-
#send! ⇒ Object
Sends the message.
-
#to(*receivers) ⇒ Object
BallouSmsGateway.
Constructor Details
#initialize ⇒ BallouSmsGateway
Returns a new instance of BallouSmsGateway.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/ballou_sms_gateway.rb', line 13 def initialize # # @UN Username # @PW Password # @O Sender # @RI Request id # @CR SMS id # @D Receiver # @LONGSMS Is this a long sms? # @M Message # @url = %w{ http://sms2.ballou.se/http/get/SendSms.php? UN=%s& PW=%s& CR=%s& RI=%s& O=%s& D=%s& LONGSMS=%s& M=%s }.join @id = UUID.new.generate @long = false @request_id = UUID.new.generate @error_message = nil end |
Instance Method Details
#from(sender) ⇒ Object
Returns BallouSmsGateway.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/ballou_sms_gateway.rb', line 110 def from(sender) if sender.to_s.length.zero? raise "Sender is invalid, to short." end # Max length 15 for integers and 10 for chars if sender.match(/^[0-9]+$/) if sender.length > 15 raise "Sender is invalid, to long." end elsif sender.length > 10 raise "Sender is invalid, to long." end @from = sender return self end |
#long ⇒ Object
42 43 44 |
# File 'lib/ballou_sms_gateway.rb', line 42 def long tap { @long = true } end |
#send! ⇒ Object
Sends the message. Raises error if message is to long or if @send and @from isn’t set.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/ballou_sms_gateway.rb', line 49 def send! if @message.length > 160 and not @long raise "Message is to long, #{@message.length} characters." end [:from, :to, :password, :username].each do |method| var = instance_variable_get("@#{method}") unless var raise "You need to specify #{method}, using the ##{method} method." end end defaults = { sms_id: @id, request_id: @request_id } doc = Nokogiri::XML(do_request!) if response = doc.at_css("response message") BallouSmsGatewayModule::Request.new({ id: response.attr("id"), message: response.text, to: response.attr("to_msisdn"), status: response.attr("status"), error: response.attr("error") }.merge(defaults)) elsif response = doc.at_css("ballou_sms_response error") BallouSmsGatewayModule::Request.new({ to: @to, status: -2, error: response.attr("code"), message: response.text, }.merge(defaults)) else BallouSmsGatewayModule::Request.new({ to: @to, status: -2, error: 7, message: @error_message }.merge(defaults)) end end |
#to(*receivers) ⇒ Object
Returns BallouSmsGateway.
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/ballou_sms_gateway.rb', line 95 def to(*receivers) receivers.flatten.each do |number| unless number.to_s.match(/^\+?[0-9]{4,}$/) raise "Invalid receiver." end end @to = receivers.flatten.join(",") return self end |