class Rapporto::SMS
Attributes
id[RW]
message[RW]
phone[RW]
subject[RW]
Public Class Methods
new(phone, subject, message, translit = @@translit)
click to toggle source
# File lib/rapporto/sms.rb, line 13 def initialize(phone, subject, message, translit = @@translit) @phone = phone @subject = subject @message = message @translit = translit validate! end
settings=(settings={})
click to toggle source
# File lib/rapporto/sms.rb, line 22 def self.settings=(settings={}) @@server = settings[:server] @@port = settings[:port] @@translit = !settings[:translit].nil? ? settings[:translit] : false # use translit or not validate_settings! end
Private Class Methods
establish_connection()
click to toggle source
# File lib/rapporto/sms.rb, line 44 def self.establish_connection Net::HTTP.new(@@server, @@port) end
validate_settings!()
click to toggle source
# File lib/rapporto/sms.rb, line 55 def self.validate_settings! raise ArgumentError, "Server should be defined for #{self}." if @@server.nil? raise ArgumentError, "Port should be defined for #{self}." if @@port.nil? raise ArgumentError, "Port should contain only numbers. #{@@port.inspect} is given." unless @@port.instance_of?(Fixnum) end
Public Instance Methods
send()
click to toggle source
# File lib/rapporto/sms.rb, line 29 def send self.class.establish_connection.start do |http| request = Net::HTTP::Get.new(send_url) response = http.request(request) response_text = response.body.strip if response_text =~ /^\d+$/ @id = response_text else raise StandardError, response_text end end end
Private Instance Methods
send_url()
click to toggle source
# File lib/rapporto/sms.rb, line 61 def send_url message = @translit ? Russian.translit(@message) : @message "/revoup?msisdn=#{@phone}&sn=#{@subject}&message=#{URI.encode(message)}&send_time=#{Time.now.strftime("%Y%d%m%H%M%S")}" end
validate!()
click to toggle source
# File lib/rapporto/sms.rb, line 48 def validate! raise ArgumentError, "Phone should be assigned to #{self.class}." if @phone.nil? raise ArgumentError, "Phone number should contain only numbers. Minimum length is 10. #{@phone.inspect} is given." unless @phone =~ /^[0-9]{10,}$/ raise ArgumentError, "Subject should be assigned to #{self.class}." if @subject.nil? raise ArgumentError, "Message should be assigned to #{self.class}." if @message.nil? end