class ActionSmser::Base
Constants
- SMS_DOUBLE_CHARS
en.wikipedia.org/wiki/GSM_03.38 , some chars takes 2 spaces
Attributes
body[RW]
INSTANCE METHODS
delivery_info[RW]
Delivery methods can use this to save data for debugging, e.g. http responses etc
delivery_options[RW]
Initialized to duplicate of ActionSmser.delivery_options
delivery_reports[RW]
from[RW]
INSTANCE METHODS
re_delivery_of_delivery_report_id[RW]
INSTANCE METHODS
sms_type[RW]
INSTANCE METHODS
to[RW]
INSTANCE METHODS
ttl[RW]
INSTANCE METHODS
Public Class Methods
message_real_cropped(message, max_length = 159)
click to toggle source
Make sure that double chars are taken account
# File lib/action_smser/base.rb, line 26 def message_real_cropped(message, max_length = 159) result = "" length = 0 message.to_s.chars.each do |char| length += SMS_DOUBLE_CHARS.include?(char) ? 2 : 1 result << char if length <= max_length end result end
message_real_length(message)
click to toggle source
# File lib/action_smser/base.rb, line 20 def message_real_length(message) i = 0 message.to_s.chars.each do |char| i += SMS_DOUBLE_CHARS.include?(char) ? 2 : 1 end i end
new(method_name = 'no_name_given', *args)
click to toggle source
Called from class.method_missing with own_sms_message when you call OwnMailer.own_sms_message
# File lib/action_smser/base.rb, line 55 def initialize(method_name = 'no_name_given', *args) @delivery_options = {} ActionSmser.delivery_options.each do |key,value| value = value.dup if value.is_a?(Hash) || value.is_a?(Array) @delivery_options[key] = value end @valid = true @sms_action = method_name @sms_type = "#{self.class}.#{@sms_action}" send method_name, *args if respond_to?(method_name) end
Public Instance Methods
body_encoded_escaped(to = 'ISO-8859-15')
click to toggle source
Most of the gateways want escaped and ISO encoded messages Also make sure that its max 500 chars long
# File lib/action_smser/base.rb, line 104 def body_encoded_escaped(to = 'ISO-8859-15') msg = body.first(500) # This could use better translittering with fallback param, see http://blog.segment7.net/2010/12/17/from-iconv-iconv-to-string-encode msg_encoded = msg.encode(to, :invalid => :replace, :undef => :replace, :replace => '_') CGI.escape(msg_encoded) end
body_escaped()
click to toggle source
# File lib/action_smser/base.rb, line 112 def body_escaped CGI.escape(body.to_s.first(500)) end
deliver()
click to toggle source
# File lib/action_smser/base.rb, line 88 def deliver self.send(:before_delivery) if self.respond_to?(:before_delivery) return false unless valid? ActionSmser::Logger.info "Sending sms - Delivery_method: #{delivery_options[:delivery_method]} - Sms: (#{self.to_s})" response = delivery_method.deliver(self) self.send(:after_delivery, response) if self.respond_to?(:after_delivery) response end
delivery_method()
click to toggle source
# File lib/action_smser/base.rb, line 83 def delivery_method ActionSmser::DeliveryMethods.const_get(delivery_options[:delivery_method].to_s.downcase.camelize) end
from_encoded()
click to toggle source
# File lib/action_smser/base.rb, line 134 def from_encoded from.to_s.gsub(/^(\+|0)/, "") end
from_escaped()
click to toggle source
# File lib/action_smser/base.rb, line 138 def from_escaped CGI.escape from_encoded end
sms(options)
click to toggle source
Main method for creating sms infos
# File lib/action_smser/base.rb, line 68 def sms(options) @body = options[:body] @to = options[:to] @from = options[:from] self end
to_as_array()
click to toggle source
# File lib/action_smser/base.rb, line 126 def to_as_array @to.is_a?(Array) ? @to : [@to] end
to_encoded()
click to toggle source
# File lib/action_smser/base.rb, line 130 def to_encoded to_numbers_array.join(",") end
to_numbers_array()
click to toggle source
make sure that to is an array and remove leading '+' or '0' chars
# File lib/action_smser/base.rb, line 117 def to_numbers_array array = if @to.is_a?(Array) @to.collect{|number| number.to_s} else [@to.to_s] end array.collect{|number| number.gsub(/^(\+|0{1,2})/, "")} end
to_s()
click to toggle source
# File lib/action_smser/base.rb, line 75 def to_s "Sms #{sms_type} - From: #{from.inspect}, To: #{to.inspect}, Body: #{body.inspect}, Valid: #{@valid}" end
ttl_to_i()
click to toggle source
# File lib/action_smser/base.rb, line 142 def ttl_to_i ttl.blank? ? ActionSmser.delivery_options[:default_ttl] : ttl.to_i end
valid?()
click to toggle source
# File lib/action_smser/base.rb, line 79 def valid? !body.blank? && !from.blank? && !to_numbers_array.collect{|number| number.to_s.blank? ? nil : true}.compact.blank? end