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.
12 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 |
# File 'lib/ballou_sms_gateway.rb', line 12 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.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/ballou_sms_gateway.rb', line 109 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
41 42 43 |
# File 'lib/ballou_sms_gateway.rb', line 41 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.
48 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 |
# File 'lib/ballou_sms_gateway.rb', line 48 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.
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/ballou_sms_gateway.rb', line 94 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 |