summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.rdoc2
-rw-r--r--init.rb2
-rw-r--r--lib/sms_fu.rb30
3 files changed, 21 insertions, 13 deletions
diff --git a/README.rdoc b/README.rdoc
index 5355cbc..4fd00b5 100644
--- a/README.rdoc
+++ b/README.rdoc
@@ -17,7 +17,7 @@ and many more ...
Add this this one line to the controller you want to be able to use SMS Fu in.
class ExampleController < ApplicationController
- include SMSFu
+ has_sms_fu
end
Modify sms_fu.yml in your config folder with your reply-to e-mail address.
diff --git a/init.rb b/init.rb
index b6cf0d9..69ece7c 100644
--- a/init.rb
+++ b/init.rb
@@ -1,5 +1,5 @@
require "action_mailer"
require File.dirname(__FILE__) + '/lib/sms_fu'
require File.dirname(__FILE__) + '/lib/sms_fu_helper.rb'
-ActionView::Base.send(:include, SMSFu)
+ActionController::Base.send(:include, SMSFu)
ActionView::Base.send(:include, SMSFuHelper) \ No newline at end of file
diff --git a/lib/sms_fu.rb b/lib/sms_fu.rb
index 6e22079..3ba2c21 100644
--- a/lib/sms_fu.rb
+++ b/lib/sms_fu.rb
@@ -22,45 +22,53 @@ 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_ROOT) ? "#{RAILS_ROOT}/config" : "#{File.dirname(__FILE__)}/../templates" unless defined?(RAILS_CONFIG_ROOT)
@config ||= YAML::load(File.open("#{RAILS_CONFIG_ROOT}/sms_fu.yml"))
@@carriers ||= @config['carriers']
@@from_address = @config['config']['from_address']
-
+
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?
-
+
options[:limit] ||= message.length
options[:from] ||= @@from_address
message = message[0..options[:limit]-1]
sms_email = determine_sms_email(format_number(number),carrier)
-
+
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
-
+
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 is_valid?(number)
number.length >= 10 && number[/^.\d+$/]
end
-
+
def determine_sms_email(phone_number, carrier)
if @@carriers.has_key?(carrier.downcase)
"#{phone_number}#{@@carriers[carrier.downcase]}"
@@ -68,6 +76,6 @@ module SMSFu
raise SMSFuException.new("Specified carrier, #{carrier} is not supported.")
end
end
-
+
class SMSFuException < StandardError; end
-end \ No newline at end of file
+end