Class: ActionSmser::Base
- Inherits:
-
Object
- Object
- ActionSmser::Base
- Defined in:
- lib/action_smser/base.rb
Constant Summary collapse
- SMS_DOUBLE_CHARS =
en.wikipedia.org/wiki/GSM_03.38 , some chars takes 2 spaces
'€[\]^{|}~'
Instance Attribute Summary collapse
-
#body ⇒ Object
INSTANCE METHODS.
-
#delivery_info ⇒ Object
Delivery methods can use this to save data for debugging, e.g.
-
#delivery_options ⇒ Object
Initialized to duplicate of ActionSmser.delivery_options.
-
#from ⇒ Object
INSTANCE METHODS.
-
#re_delivery_of_delivery_report_id ⇒ Object
INSTANCE METHODS.
-
#sms_type ⇒ Object
INSTANCE METHODS.
-
#to ⇒ Object
INSTANCE METHODS.
Class Method Summary collapse
-
.message_real_cropped(message, max_length = 159) ⇒ Object
Make sure that double chars are taken account.
- .message_real_length(message) ⇒ Object
-
.method_missing(method, *args) ⇒ Object
:nodoc:.
-
.respond_to?(method, include_private = false) ⇒ Boolean
:nodoc:.
Instance Method Summary collapse
-
#body_encoded_escaped(to = 'ISO-8859-15//TRANSLIT//IGNORE') ⇒ Object
Most of the gateways want escaped and ISO encoded messages Also make sure that its max 500 chars long.
- #body_escaped ⇒ Object
- #deliver ⇒ Object
- #delivery_method ⇒ Object
- #from_encoded ⇒ Object
-
#initialize(method_name = 'no_name_given', *args) ⇒ Base
constructor
Called from class.method_missing with own_sms_message when you call OwnMailer.own_sms_message.
- #logger ⇒ Object
-
#sms(options) ⇒ Object
Main method for creating sms infos.
- #to_as_array ⇒ Object
- #to_encoded ⇒ Object
-
#to_numbers_array ⇒ Object
make sure that to is an array and remove leading ‘+’ or ‘0’ chars.
- #to_s ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(method_name = 'no_name_given', *args) ⇒ Base
Called from class.method_missing with own_sms_message when you call OwnMailer.own_sms_message
57 58 59 60 61 62 63 |
# File 'lib/action_smser/base.rb', line 57 def initialize(method_name = 'no_name_given', *args) @delivery_options = ActionSmser..dup @valid = true @sms_action = method_name @sms_type = "#{self.class}.#{@sms_action}" send method_name, *args if respond_to?(method_name) end |
Instance Attribute Details
#body ⇒ Object
INSTANCE METHODS
43 44 45 |
# File 'lib/action_smser/base.rb', line 43 def body @body end |
#delivery_info ⇒ Object
Delivery methods can use this to save data for debugging, e.g. http responses etc
49 50 51 |
# File 'lib/action_smser/base.rb', line 49 def delivery_info @delivery_info end |
#delivery_options ⇒ Object
Initialized to duplicate of ActionSmser.delivery_options
46 47 48 |
# File 'lib/action_smser/base.rb', line 46 def @delivery_options end |
#from ⇒ Object
INSTANCE METHODS
43 44 45 |
# File 'lib/action_smser/base.rb', line 43 def from @from end |
#re_delivery_of_delivery_report_id ⇒ Object
INSTANCE METHODS
43 44 45 |
# File 'lib/action_smser/base.rb', line 43 def re_delivery_of_delivery_report_id @re_delivery_of_delivery_report_id end |
#sms_type ⇒ Object
INSTANCE METHODS
43 44 45 |
# File 'lib/action_smser/base.rb', line 43 def sms_type @sms_type end |
#to ⇒ Object
INSTANCE METHODS
43 44 45 |
# File 'lib/action_smser/base.rb', line 43 def to @to end |
Class Method Details
.message_real_cropped(message, max_length = 159) ⇒ Object
Make sure that double chars are taken account
27 28 29 30 31 32 33 34 35 |
# File 'lib/action_smser/base.rb', line 27 def (, max_length = 159) result = "" length = 0 .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) ⇒ Object
21 22 23 24 25 |
# File 'lib/action_smser/base.rb', line 21 def () i = 0 .to_s.chars.each do |char| i += SMS_DOUBLE_CHARS.include?(char) ? 2 : 1 end i end |
.method_missing(method, *args) ⇒ Object
:nodoc:
9 10 11 12 |
# File 'lib/action_smser/base.rb', line 9 def method_missing(method, *args) #:nodoc: return super unless respond_to?(method) new(method, *args) end |
.respond_to?(method, include_private = false) ⇒ Boolean
:nodoc:
14 15 16 17 |
# File 'lib/action_smser/base.rb', line 14 def respond_to?(method, include_private = false) #:nodoc: #super || public_instance_methods(true).include?(method.to_s) super || method_defined?(method.to_sym) end |
Instance Method Details
#body_encoded_escaped(to = 'ISO-8859-15//TRANSLIT//IGNORE') ⇒ Object
Most of the gateways want escaped and ISO encoded messages Also make sure that its max 500 chars long
103 104 105 106 |
# File 'lib/action_smser/base.rb', line 103 def body_encoded_escaped(to = 'ISO-8859-15//TRANSLIT//IGNORE') msg = body.first(500) CGI.escape(Iconv.iconv(to, 'utf-8', msg).first.to_s) end |
#body_escaped ⇒ Object
108 109 110 |
# File 'lib/action_smser/base.rb', line 108 def body_escaped CGI.escape(body.to_s.first(500)) end |
#deliver ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/action_smser/base.rb', line 86 def deliver self.send(:before_delivery) if self.respond_to?(:before_delivery) return false unless valid? logger.info "Sending sms (#{self.to_s})" response = delivery_method.deliver(self) if valid? self.send(:after_delivery, response) if self.respond_to?(:after_delivery) response #SmsSentInfo.create_from_http_response(@response, self.sender, recipients_receive_sms, sms_type, self.message) end |
#delivery_method ⇒ Object
81 82 83 |
# File 'lib/action_smser/base.rb', line 81 def delivery_method ActionSmser::DeliveryMethods.const_get([:delivery_method].to_s.downcase.camelize) end |
#from_encoded ⇒ Object
130 131 132 |
# File 'lib/action_smser/base.rb', line 130 def from_encoded from.to_s.gsub(/^(\+|0)/, "") end |
#logger ⇒ Object
134 135 136 |
# File 'lib/action_smser/base.rb', line 134 def logger ActionSmser::Logger end |
#sms(options) ⇒ Object
Main method for creating sms infos
66 67 68 69 70 71 |
# File 'lib/action_smser/base.rb', line 66 def sms() @body = [:body] @to = [:to] @from = [:from] self end |
#to_as_array ⇒ Object
122 123 124 |
# File 'lib/action_smser/base.rb', line 122 def to_as_array @to.is_a?(Array) ? @to : [@to] end |
#to_encoded ⇒ Object
126 127 128 |
# File 'lib/action_smser/base.rb', line 126 def to_encoded to_numbers_array.join(",") end |
#to_numbers_array ⇒ Object
make sure that to is an array and remove leading ‘+’ or ‘0’ chars
113 114 115 116 117 118 119 120 |
# File 'lib/action_smser/base.rb', line 113 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)/, "")} end |
#to_s ⇒ Object
73 74 75 |
# File 'lib/action_smser/base.rb', line 73 def to_s "Sms #{sms_type} - From: #{from.inspect}, To: #{to.inspect}, Body: #{body.inspect}, Valid: #{@valid}" end |
#valid? ⇒ Boolean
77 78 79 |
# File 'lib/action_smser/base.rb', line 77 def valid? !body.blank? && !from.blank? && !to_numbers_array.collect{|number| number.to_s.blank? ? nil : true}.compact.blank? end |