Sha256: e13d4289d28c64ec263f63d83385b5acce6a7b57a0e541307b14d63207486591
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
require 'active_support' require 'rest_client' require 'json' module Moonshado class Sms cattr_accessor :config attr_accessor :number, :message def self.url @url ||= URI.parse(config[:sms_api_url]) "#{@url.scheme}://#{@url.user}:#{@url.password}@#{@url.host}:#{@url.port}/sms" end def self.find(id) if config[:test_env] == true {:sms => {:id => id, :reports => '[{"update_date":"2010-01-03T22:56:45-08:00","status_info":"test"}]'}, :stat => "ok"} else response = RestClient.get("#{url}/#{id}") JSON.parse(response.body) end end def initialize(number = "", message = "") @number = number @message = message end def deliver_sms raise MoonshadoSMSException.new("Invalid message") unless is_message_valid?(@message) if config[:test_env] == true {:stat => 'ok', :id => Digest::SHA1.hexdigest(Time.now.to_s + rand(12341234).to_s)[1..16]} else response = RestClient.post( Moonshado::Sms.url, {:sms => {:device_address => format_number(@number), :message => @message}} ) JSON.parse(response.body) end rescue MoonshadoSMSException => exception raise exception end def format_number(number) formatted = number.gsub("-","").strip return is_number_valid?(formatted) ? formatted : (raise MoonshadoSMSException.new("Phone number (#{number}) is not formatted correctly")) end def is_number_valid?(number) number.length >= 11 && number[/^.\d+$/] end def is_message_valid?(message) message.size <= 115 && !message.nil? && message.is_a?(String) && !message.empty? end class MoonshadoSMSException < StandardError; end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
moonshado-sms-0.3.1 | lib/moonshado/sms.rb |