class Smshelper::Api::Base

Attributes

extra_options[RW]
sent_message_ids[R]
sent_message_statuses[R]

Public Class Methods

new(*args) click to toggle source
# File lib/smshelper/api/base.rb, line 8
def initialize(*args)
  @sent_message_ids, @sent_message_statuses = Array.new, Hash.new
  @response_code = ResponseCodes.new
  @extra_options = (args.empty? ? {} : args.shift)
  @uuid = UUID.new
  class_factory 'DeliveryReport', 'InboundMessage', 'UnknownReply', 'HlrReport'
end

Protected Class Methods

_load(str) click to toggle source
# File lib/smshelper/api/base.rb, line 49
def self._load(str)
  self.class.new(YAML.load(str))
end

Protected Instance Methods

_dump(level) click to toggle source

I was lazy to lookup which method takes precedence in what situation, hence:

# File lib/smshelper/api/base.rb, line 37
def _dump(level)
  attributes.to_yaml
end
class_factory(*names) click to toggle source
# File lib/smshelper/api/base.rb, line 17
def class_factory(*names)
  names.each do |name|
    unless self.class.const_defined?(name)
      klass = self.class.const_set(name, Class.new)
      klass.class_eval do
        include Virtus

        define_method(:initialize) do |args = {}|
          args.each do |k,v|
            # Sinatra params has splat, captures
            unless k.to_s =~ (/splat/ || /captures/)
              self.class.attribute(k, v.class, :default => v)
            end
          end
          self.class.attribute(:uuid, String, :default => UUID.generate) unless args[:uuid]
          self.class.attribute(:service, String, :default => self.class.name.split('::')[2])
        end

        # I was lazy to lookup which method takes precedence in
        # what situation, hence:
        def _dump(level)
          attributes.to_yaml
        end

        def marshal_dump
          attributes.to_yaml
        end

        def marshal_load(str)
          self.class.new(YAML.load(str))
        end

        def self._load(str)
          self.class.new(YAML.load(str))
        end

      end
    end
  end
end
marshal_dump() click to toggle source
# File lib/smshelper/api/base.rb, line 41
def marshal_dump
  attributes.to_yaml
end
marshal_load(str) click to toggle source
# File lib/smshelper/api/base.rb, line 45
def marshal_load(str)
  self.class.new(YAML.load(str))
end