summaryrefslogtreecommitdiffstats
path: root/lib/sms_fu.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sms_fu.rb')
-rw-r--r--lib/sms_fu.rb94
1 files changed, 42 insertions, 52 deletions
diff --git a/lib/sms_fu.rb b/lib/sms_fu.rb
index 1b3f35d..3e17b78 100644
--- a/lib/sms_fu.rb
+++ b/lib/sms_fu.rb
@@ -1,6 +1,8 @@
require 'yaml'
+require 'action_mailer'
require 'sms_notifier'
-# Copyright (c) 2008 Brendan G. Lim (brendangl@gmail.com)
+
+# Copyright (c) 2008-2010 Brendan G. Lim (brendan@intridea.com)
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,70 +24,58 @@ require 'sms_notifier'
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
module SMSFu
- def self.included(base)
- base.class_eval do
- def self.has_sms_fu
- include SMSFu
- end
- end
- end
-
RAILS_CONFIG_ROOT = defined?(Rails) ?
- Rails.env == 'test' ?
- "#{File.dirname(__FILE__)}/../templates" :
- "#{RAILS_ROOT}/config" :
- RAILS_ENV == 'test' ?
- "#{File.dirname(__FILE__)}/../templates" :
- "#{RAILS_ROOT}/config"
+ (Rails.env == 'test' ? "#{File.dirname(__FILE__)}/../templates" : "#{RAILS_ROOT}/config") :
+ (defined?(RAILS_ENV) ? (RAILS_ENV == 'test' ? "#{File.dirname(__FILE__)}/../templates" : "#{RAILS_ROOT}/config") :
+ "#{File.dirname(__FILE__)}/../templates")
+
@config ||= YAML::load(File.open("#{RAILS_CONFIG_ROOT}/sms_fu.yml"))
@@carriers ||= @config['carriers']
@@from_address = @config['config']['from_address']
+
+ class << self
+ def carrier_name(key)
+ carriers[key]['name']
+ end
- def self.carrier_name(key)
- carriers[key]['name']
- end
-
- def self.carriers
- @@carriers.dup
- end
-
- def deliver_sms(number,carrier,message,options={})
- raise SMSFuException.new("Cannot deliver an empty message to #{format_number(number)}") if message.nil? or message.empty?
+ def carriers
+ @@carriers.dup
+ end
- options[:limit] ||= message.length
- options[:from] ||= @@from_address
- message = message[0..options[:limit]-1]
- sms_email = determine_sms_email(format_number(number),carrier)
+ def deliver(number,carrier,message,options={})
+ raise SMSFuException.new("Can't deliver blank message to #{format_number(number)}") if message.nil? or message.empty?
+ options[:limit] ||= message.length
+ options[:from] ||= @@from_address
+ message = message[0..options[:limit]-1]
+ sms_email = sms_email(format_number(number),carrier)
- SmsNotifier.deliver_sms_message(sms_email,message,options[:from])
- rescue SMSFuException => exception
- raise exception
- end
+ SmsNotifier.deliver_sms_message(sms_email,message,options[:from])
+ rescue SMSFuException => exception
+ raise exception
+ end
- def get_sms_address(number,carrier)
- number = format_number(number)
- determine_sms_email(number,carrier)
- end
+ def sms_address(number,carrier)
+ number = format_number(number)
+ sms_email(number,carrier)
+ end
- private
+ private
- def format_number(number)
- pre_formatted = number.gsub("-","").strip
- formatted = (pre_formatted.length == 11 && pre_formatted[0,1] == "1") ? pre_formatted[1..pre_formatted.length] : pre_formatted
- return is_valid?(formatted) ? formatted : (raise SMSFuException.new("Phone number (#{number}) is not formatted correctly"))
- end
+ def format_number(number)
+ pre_formatted = number.gsub("-","").strip
+ formatted = (pre_formatted.length == 11 && pre_formatted[0,1] == "1") ? pre_formatted[1..pre_formatted.length] : pre_formatted
+ return is_valid?(formatted) ? formatted : (raise SMSFuException.new("Phone number (#{number}) is not formatted correctly"))
+ end
- def is_valid?(number)
- number.length >= 10 && number[/^.\d+$/]
- end
+ def is_valid?(number)
+ number.length >= 10 && number[/^.\d+$/]
+ end
- def determine_sms_email(phone_number, carrier)
- if @@carriers.has_key?(carrier.downcase)
+ def sms_email(phone_number, carrier)
+ raise SMSFuException.new("Specified carrier, #{carrier} is not supported.") unless @@carriers.has_key?(carrier.downcase)
"#{phone_number}#{@@carriers[carrier.downcase]['value']}"
- else
- raise SMSFuException.new("Specified carrier, #{carrier} is not supported.")
- end
- end
+ end
+ end
class SMSFuException < StandardError; end
end