class BabySMS::Message

Constants

MAX_CONTENTS_LENGTH

Attributes

contents[RW]
from[RW]
to[RW]

Public Class Methods

new(to:, from: nil, contents:, uuid: nil) click to toggle source
# File lib/babysms/message.rb, line 10
def initialize(to:, from: nil, contents:, uuid: nil)
  @to = Phony.normalize(to)
  @from = from
  @contents = contents
end

Public Instance Methods

deliver(adapters: BabySMS.adapters, strategy: BabySMS.strategy) click to toggle source
# File lib/babysms/message.rb, line 16
def deliver(adapters: BabySMS.adapters, strategy: BabySMS.strategy)
  validate!
  BabySMS::MailMan.new(adapters: adapters, strategy: strategy).deliver(self)
end
reply(contents:, adapters: BabySMS.adapters, strategy: BabySMS.strategy) click to toggle source

generates and delivers a reply to a message

# File lib/babysms/message.rb, line 22
def reply(contents:, adapters: BabySMS.adapters, strategy: BabySMS.strategy)
  Message.new(to: from, from: to, contents: contents)
         .deliver(adapters: adapters, strategy: strategy)
end

Private Instance Methods

validate!() click to toggle source
# File lib/babysms/message.rb, line 31
def validate!
  validate_to!
  validate_contents!
end
validate_contents!() click to toggle source
# File lib/babysms/message.rb, line 46
def validate_contents!
  if contents.nil? || contents.empty?
    fail BabySMS::InvalidMessage, 'no contents'
  end

  if contents.size > MAX_CONTENTS_LENGTH
    msg = "contents too long (#{contents.size} vs max of #{MAX_CONTENTS_LENGTH}); " \
          "contents: `#{contents}`"
    fail BabySMS::InvalidMessage, msg
  end
end
validate_to!() click to toggle source
# File lib/babysms/message.rb, line 36
def validate_to!
  if to.nil? || to.empty?
    fail BabySMS::InvalidMessage, 'no to:'
  end

  unless Phony.plausible?(to)
    fail BabySMS::InvalidMessage, "implausible to: #{to}"
  end
end