module Smsfly

Constants

VERSION

Public Class Methods

authentication?() click to toggle source
# File lib/smsfly.rb, line 45
  def self.authentication?
    xml_string = <<XML
      <?xml version="1.0" encoding="utf-8"?>
      <request>
      <operation>GETBALANCE</operation>
      </request>
XML
    full_url = "http://sms-fly.com/api/api.php"
    uri = URI.parse(full_url)
    headers = {'Content-Type' => "text/xml", 'Accept' => "text/xml" }
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri, headers)
    request.basic_auth login, password
    request.body = xml_string
    response = http.request(request)
    if response.body.to_s == 'Access denied!'
      debug   "#{colorize('#############################', "red", "red")}"
      debug   "#{colorize('#', "red", "red")}"+"#{colorize('Incorrect Login or Password', "red")}"+ "#{colorize('#', "red", "red")}"
      debug   "#{colorize('#############################', "red", "red")}"
      return false
    else
      debug   "#{colorize('###########################', "green" , "green")}"
      debug  "#{colorize('#', "green", "green")}"+ "#{colorize('Successful Authentication', "green")}"+ "#{colorize('#', "green", "green")}"
      debug   "#{colorize('###########################', "green" , "green")}"
      return true
    end

  end
balance() click to toggle source
# File lib/smsfly.rb, line 74
  def self.balance
    if  !self.authentication?
      debug   "#{colorize('#############################', "red", "red")}"
      debug   "#{colorize('#', "red", "red")}"+"#{colorize('Incorrect Login or Password', "red")}"+ "#{colorize('#', "red", "red")}"
      debug   "#{colorize('#############################', "red", "red")}"
      return false
    else
      xml_string = <<XML
      <?xml version="1.0" encoding="utf-8"?>
      <request>
      <operation>GETBALANCE</operation>
      </request>
XML
      full_url = "http://sms-fly.com/api/api.php"
      uri = URI.parse(full_url)
      headers = {'Content-Type' => "text/xml", 'Accept' => "text/xml" }
      http = Net::HTTP.new(uri.host, uri.port)
      request = Net::HTTP::Post.new(uri.request_uri, headers)
      request.basic_auth login, password
      request.body = xml_string
      response = http.request(request)
      balance =  response.body.match(/<balance>(.*)<\/balance>/)[1]
      debug "#{colorize('##', "red", "red")}"+"#{colorize("You balance: #{balance}  UAH",  "red")}"+"#{colorize('##', "red", "red")}"
      return balance.to_f
    end
  end
colorize(text, color = "default", bgColor = "default") click to toggle source
# File lib/smsfly.rb, line 33
def self.colorize(text, color = "default", bgColor = "default")
  colors = {"default" => "38","black" => "30","red" => "31","green" => "32","brown" => "33", "blue" => "34", "purple" => "35",
            "cyan" => "36", "gray" => "37", "dark gray" => "1;30", "light red" => "1;31", "light green" => "1;32", "yellow" => "1;33",
            "light blue" => "1;34", "light purple" => "1;35", "light cyan" => "1;36", "white" => "1;37"}
  bgColors = {"default" => "0", "black" => "40", "red" => "41", "green" => "42", "brown" => "43", "blue" => "44",
              "purple" => "45", "cyan" => "46", "gray" => "47", "dark gray" => "100", "light red" => "101", "light green" => "102",
              "yellow" => "103", "light blue" => "104", "light purple" => "105", "light cyan" => "106", "white" => "107"}
  color_code = colors[color]
  bgColor_code = bgColors[bgColor]
  return "\033[#{bgColor_code};#{color_code}m#{text}\033[0m"
end
connect_info() click to toggle source
# File lib/smsfly.rb, line 19
def self.connect_info

  if Smsfly.login.length == 12
    debug 'You login:' "#{Smsfly.login}"
    debug 'You password:' "#{Smsfly.password}"
    return true
  else
    debug  'Incorrect login'
    debug  'Login must be like 380675807873'
    debug  'Please configure this file  /config/initializers/smsfly.rb'
    return false
  end
end
get_status(text , options = {}) click to toggle source
# File lib/smsfly.rb, line 172
  def self.get_status(text , options = {})

    xml_string = <<XML
     <?xml version="1.0" encoding="utf-8"?>
      <request>
        <operation>GETCAMPAIGNINFO</operation>
        <message campaignID="#{text}" />
      </request>
XML

    full_url = "http://sms-fly.com/api/api.php"
    uri = URI.parse(full_url)
    headers = {'Content-Type' => "text/xml", 'Accept' => "text/xml" }
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri, headers)
    request.basic_auth login, password
    request.body = xml_string
    response = http.request(request)
    debug response.code
    debug response.body

    if response.body.scan(/<state (.*?)></).present?
      status_hash = Hash.new
      response.body.scan(/<state (.*?)></).each do |e|
        status_hash[e.first.match('status="(.*?)"')[1]] =  e.first.match(' messages="(.*?)"')[1]
      end
      return status_hash
    else
      return false
    end
  end
send_sms(text, recipient , description , source , options = {} ) click to toggle source
# File lib/smsfly.rb, line 133
  def self.send_sms(text, recipient , description , source  , options = {} )
    start_time = 'AUTO'
    end_time = 'AUTO'
    rate = 1
    lifetime = 4
    xml_string = <<XML
      <?xml version="1.0" encoding="utf-8"?>
      <request>
      <operation>SENDSMS</operation>
      <message start_time="#{start_time}" end_time="#{end_time}" lifetime="#{lifetime}" rate="#{rate}" desc="'#{description}" source="#{source}">
      <body>#{text}</body>
      <recipient>#{recipient}</recipient>
      </message>
      </request>
XML

    full_url = "http://sms-fly.com/api/api.php"
    uri = URI.parse(full_url)
    headers = {'Content-Type' => "text/xml", 'Accept' => "text/xml" }
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri, headers)
    request.basic_auth login, password
    request.body = xml_string
    response = http.request(request)
    p response.body
    if response.body.match(/campaignID="(.*?)"/).present?
      campaign = response.body.match(/campaignID="(.*?)"/)[1]
    else
      campaign = false
    end

    if campaign.present? && options[:log_obj].present? && options[:log_filed].present?
      options[:log_obj].send("#{options[:log_filed]}=", campaign)
      options[:log_obj].save
    end
  end
test_sms(text) click to toggle source
# File lib/smsfly.rb, line 101
  def self.test_sms(text)
    recipient = Smsfly.login
    description = 'Smsfly Test Message'
    start_time = 'AUTO'
    end_time = 'AUTO'
    rate = 1
    lifetime = 4
    source = 'SMS'
    xml_string = <<XML
      <?xml version="1.0" encoding="utf-8"?>
      <request>
      <operation>SENDSMS</operation>
      <message start_time="#{start_time}" end_time="#{end_time}" lifetime="#{lifetime}" rate="#{rate}" desc="'#{description}" source="#{source}">
      <body>Smsfly Test Text - #{text}</body>
      <recipient>#{recipient}</recipient>
      </message>
      </request>
XML

    full_url = "http://sms-fly.com/api/api.php"
    uri = URI.parse(full_url)
    headers = {'Content-Type' => "text/xml", 'Accept' => "text/xml" }
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri, headers)
    request.basic_auth login, password
    request.body = xml_string
    response = http.request(request)
    debug response.code
    debug response.body
  end