summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrendan G. Lim2010-08-29 14:18:45 -0500
committerBrendan G. Lim2010-08-29 14:18:45 -0500
commita32865aef001a833cb0d9538e652bd7335180a0c (patch)
tree6d693f888b1967b37ce0d66d1982a36a15c48423
parent04364348aaab21cfed81df492c37d8e7a00097c7 (diff)
downloadsms-fu-a32865aef001a833cb0d9538e652bd7335180a0c.tar.bz2
Updating to 1.1.1
-rw-r--r--lib/sms_fu/sms_fu.rb160
-rw-r--r--sms_fu.gemspec9
-rw-r--r--views/sms_notifier/sms_message.html.erb1
3 files changed, 96 insertions, 74 deletions
diff --git a/lib/sms_fu/sms_fu.rb b/lib/sms_fu/sms_fu.rb
index 82af796..3168cd1 100644
--- a/lib/sms_fu/sms_fu.rb
+++ b/lib/sms_fu/sms_fu.rb
@@ -1,88 +1,112 @@
-class SMSFu
- DELIVERY_OPTIONS = [:action_mailer, :pony]
-
- def self.configure(delivery, options = {})
- new(options.merge!(:delivery => delivery.to_sym))
- end
+module SMSFu
+ class Client
+ DELIVERY_METHODS = [:action_mailer, :pony]
+ attr_accessor :delivery, :pony_config
- def initialize(options = {})
- raise_exception("Delivery options can only be: '#{DELIVERY_OPTIONS.join(", ")}'") unless DELIVERY_OPTIONS.include?(options[:delivery])
- if options[:delivery] == :pony && (options[:pony_options][:via].to_sym != :sendmail && !options[:pony_options].has_key?(:via_options))
- raise_exception("Missing Pony configuration options")
+ # Sets up a new SMSFu::Client. Allows for use of ActionMailer or
+ # Pony for e-mail delivery. Pony requires :pony_config to be
+ # defined to work properly.
+ #
+ # * ActionMailer 3
+ # sms_fu = SMSFu::Client.configure(:delivery => :action_mailer)
+ #
+ # * Pony 1.0
+ # sms_fu = SMSFu::Client.configure(:delivery => :pony,
+ # :pony_config => { :via => :sendmail })
+ #
+ def self.configure(opts = {})
+ new(opts)
end
-
- @@mail_config = { :delivery => options[:delivery].to_sym, :pony_options => options[:pony_options] }
- @@yaml_config = YAML::load(options[:yaml_config] ? options[:yaml_config] : File.open("#{template_directory}/sms_fu.yml"))
- end
-
- def from_address
- @@yaml_config['config']['from_address']
- end
- def carriers
- @@yaml_config['carriers']
- end
+ def initialize(opts = {})
+ self.delivery = opts[:delivery].to_sym
+ self.pony_config = opts[:pony_config]
+ raise SMSFuException.new("Pony configuration required") if @delivery == :pony && @pony_config.nil?
+ end
- def carrier_name(key)
- carrier(key)['name']
+ def delivery=(new_delivery)
+ if DELIVERY_METHODS.include?(new_delivery.to_sym)
+ @delivery = new_delivery
+ else
+ raise SMSFuException.new("Delivery options can only be: '#{DELIVERY_METHODS.join(", ")}'")
+ end
+ end
+
+ # Delivers the SMS message in the form of an e-mail
+ # sms_fu.deliver("1234567890","at&t","hello world")
+ def deliver(number, carrier, message, options = {})
+ raise SMSFuException.new("Can't deliver blank message to #{format_number(number)}") if message.nil? || message.empty?
+
+ limit = options[:limit] || message.length
+ from = options[:from] || from_address
+ message = message[0..limit-1]
+ email = SMSFu.sms_address(number,carrier)
+
+ if @delivery == :pony
+ Pony.mail({:to => email, :body => message, :from => from}.merge!(@pony_config))
+ else
+ SMSNotifier.send_sms(email, message, from).deliver
+ end
+ end
end
- def carrier_email(key)
- carrier(key.downcase)['value']
- end
+ class << self
+ def config_yaml
+ @@config_yaml ||= YAML::load(File.open("#{template_directory}/sms_fu.yml"))
+ end
- def carrier(key)
- raise_exception("Carrier (#{key}) is not supported") unless carriers.has_key?(key.downcase)
- carriers[key]
- end
+ # Returns back a list of all carriers
+ # SMSFu.carriers
+ def carriers
+ config_yaml['carriers']
+ end
+
+ def from_address
+ config_yaml['config']['from_address']
+ end
- def deliver(number, carrier, message, options = {})
- raise_exception("Can't deliver blank message to #{format_number(number)}") if message.nil? or message.empty?
- limit = options[:limit] || message.length
- from = options[:from] || from_address
- message = message[0..limit-1]
- email = sms_address(number,carrier)
+ def carrier_name(key)
+ carrier(key)['name']
+ end
- if @@mail_config[:delivery] == :pony
- Pony.mail(:to => email,
- :body => message,
- :from => from,
- :via => @@mail_config[:pony_options][:via],
- :via_options => @@mail_config[:pony_options][:via_options])
- else
- SMSNotifier.send_sms(email, message, from).deliver
+ def carrier_email(key)
+ carrier(key.downcase)['value']
+ end
+
+ def carrier(key)
+ raise SMSFuException.new("Carrier (#{key}) is not supported") unless SMSFu.carriers.has_key?(key.downcase)
+ carriers[key]
end
- end
- def sms_address(number,carrier)
- format_number(number) + carrier_email(carrier.downcase)
- end
+ # Returns back a properly formatted SMS e-mail address
+ # SMSFu.sms_address("1234567890","at&t")
+ def sms_address(number,carrier)
+ raise SMSFuException.new("Missing number or carrier") if number.nil? || carrier.nil?
+ format_number(number) + carrier_email(carrier.downcase)
+ end
- protected
+ protected
- def format_number(number)
- stripped = number.gsub("-","").strip
- formatted = (stripped.length == 11 && stripped[0,1] == "1") ? stripped[1..stripped.length] : stripped
- raise_exception("Number (#{number}) is not formatted correctly") unless valid_number?(formatted)
- formatted
- end
+ def format_number(number)
+ stripped = number.gsub("-","").strip
+ formatted = (stripped.length == 11 && stripped[0,1] == "1") ? stripped[1..stripped.length] : stripped
+ raise SMSFuException.new("Number (#{number}) is not formatted correctly") unless valid_number?(formatted)
+ formatted
+ end
- def valid_number?(number)
- number.length >= 10 && number[/^.\d+$/]
- end
+ def valid_number?(number)
+ number.length >= 10 && number[/^.\d+$/]
+ end
- def template_directory
- directory = defined?(Rails) ? "#{RAILS_ROOT}/config" : "#{File.dirname(__FILE__)}/../../templates"
- if (defined?(Rails) && Rails.env == 'test') || (defined?(RAILS_ENV) && RAILS_ENV == 'test)')
- "#{File.dirname(__FILE__)}/../../templates"
- else
- directory
+ def template_directory
+ directory = defined?(Rails) ? "#{RAILS_ROOT}/config" : "#{File.dirname(__FILE__)}/../../templates"
+ if (defined?(Rails) && Rails.env == 'test') || (defined?(RAILS_ENV) && RAILS_ENV == 'test)')
+ "#{File.dirname(__FILE__)}/../../templates"
+ else
+ directory
+ end
end
end
-
- def raise_exception(message)
- raise SMSFuException.new(message)
- end
end
class SMSFuException < StandardError; end \ No newline at end of file
diff --git a/sms_fu.gemspec b/sms_fu.gemspec
index d24e0b4..b020457 100644
--- a/sms_fu.gemspec
+++ b/sms_fu.gemspec
@@ -2,12 +2,12 @@
Gem::Specification.new do |s|
s.name = %q{sms_fu}
- s.version = "1.1.0"
+ s.version = "1.1.1"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Brendan G. Lim"]
s.date = %q{2010-08-23}
- s.description = %q{sms_fu allows you to send free text messages to a mobile recipient.}
+ s.description = %q{SMS Fu allows you to send text messages to a mobile recipient for free. It leverages ActionMailer or Pony for delivery of text messages through e-mail.}
s.email = %q{brendangl@gmail.com}
s.extra_rdoc_files = [
"README.rdoc"
@@ -25,15 +25,14 @@ Gem::Specification.new do |s|
"sms_fu.gemspec",
"tasks/sms_fu_tasks.rake",
"templates/sms_fu.yml",
- "test/sms_fu_test.rb",
- "views/sms_notifier/sms_message.html.erb"
+ "test/sms_fu_test.rb"
]
s.has_rdoc = true
s.homepage = %q{http://github.com/brendanlim/sms-fu}
s.rdoc_options = ["--charset=UTF-8"]
s.require_paths = ["lib"]
s.rubygems_version = %q{1.3.1}
- s.summary = %q{sms_fu allows you to send free text messages to a mobile recipient using an e-mail to sms gateway.}
+ s.summary = %q{sms_fu allows you to send free text messages to a mobile recipient.}
s.test_files = [
"test/sms_fu_test.rb"
]
diff --git a/views/sms_notifier/sms_message.html.erb b/views/sms_notifier/sms_message.html.erb
deleted file mode 100644
index 17a3d7c..0000000
--- a/views/sms_notifier/sms_message.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= @message %> \ No newline at end of file