Sha256: 8b566280a45d52d6b4618a2e47afb6124a3b870fa8be96585f8d66484955065a

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

require 'securerandom'

module VirtualSms
  class Message
    include ActionView::Helpers::TagHelper

    attr_accessor :sms, :date
    delegate :body, :from, to: :sms

    def initialize(sms)
      @sms = sms
      @sms[:sms_id] = SecureRandom.uuid
      self.date = Time.now
    end

    def id
      @sms[:sms_id]
    end

    def to
      addresses = @sms.to
      address = addresses[0].to_s
      count = addresses.length
      count > 1 ? address + ", ...#{count - 1} more" : address
    end

    def list_to
      @sms.to.join(', ')
    end

    def body_tag
      content_tag :pre, body unless body.nil?
    end

    def raw
      @sms.to_s
    end

    def self.all
      messages = cache.fetch(CacheKey) do
        messages = []
      end
      messages
    end

    def self.find(id)
      message = all.find { |message| message.id == id }
      raise ActiveRecord::RecordNotFound if message.nil?
      message
    end

    def self.clear
      cache.delete(CacheKey)
    end

    def self.cache
      @cache ||= ActiveSupport::Cache::FileStore.new('tmp/virtual_sms')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
virtual_sms-0.2.0 app/models/virtual_sms/message.rb