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