summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sms_fu.rb34
-rw-r--r--lib/sms_fu_helper.rb17
-rw-r--r--lib/sms_notifier.rb1
3 files changed, 38 insertions, 14 deletions
diff --git a/lib/sms_fu.rb b/lib/sms_fu.rb
index 2aa2dea..b8b56bd 100644
--- a/lib/sms_fu.rb
+++ b/lib/sms_fu.rb
@@ -22,52 +22,60 @@ 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)
- return (number.length >= 10 && number[/^.\d+$/]) ? true : false
+ number.length >= 10 && number[/^.\d+$/]
end
-
+
def determine_sms_email(phone_number, carrier)
if @@carriers.has_key?(carrier.downcase)
- "#{phone_number}#{@@carriers[carrier.downcase]}"
+ "#{phone_number}#{@@carriers[carrier.downcase]['value']}"
else
raise SMSFuException.new("Specified carrier, #{carrier} is not supported.")
end
end
-
+
class SMSFuException < StandardError; end
-end \ No newline at end of file
+end
diff --git a/lib/sms_fu_helper.rb b/lib/sms_fu_helper.rb
new file mode 100644
index 0000000..5730444
--- /dev/null
+++ b/lib/sms_fu_helper.rb
@@ -0,0 +1,17 @@
+module SMSFuHelper
+ # Returns a collection of carriers to be used in your own select tag
+ # e.g., <%= f.select :mobile_carrier, carrier_collection %>
+ def carrier_collection
+ SMSFu.carriers.sort.collect{ |carrier| [carrier[1]["name"], carrier[0]] }
+ end
+
+ # Returns a formatted select box filled with carriers
+ # e.g., <%= carrier_select %>
+ # - name => name of the method in which you want to store the carrier name
+ # - phrase => default selected blank option in select box
+ # - selected => carrier to pre-select
+ def carrier_select(name = :mobile_carrier, phrase = "Select a Carrier", selected = nil)
+ select_tag name, options_for_select([phrase,nil]+carrier_collection, selected || phrase)
+ end
+
+end
diff --git a/lib/sms_notifier.rb b/lib/sms_notifier.rb
index 5d960c6..644408a 100644
--- a/lib/sms_notifier.rb
+++ b/lib/sms_notifier.rb
@@ -27,7 +27,6 @@ class SmsNotifier < ActionMailer::Base
content_type "text/plain"
recipients recipient
from sender_email
-
body['message'] = message
end