Sha256: aa1819fe8d7949e0293190f40d8f16203d58ee13973c20ed0b670770f459a2ba

Contents?: true

Size: 1004 Bytes

Versions: 4

Compression:

Stored size: 1004 Bytes

Contents

require "imap/backup/email/mboxrd/message"

module Imap; end

module Imap::Backup
  class Serializer::Message
    attr_accessor :uid
    attr_accessor :flags
    attr_reader :offset
    attr_reader :length
    attr_reader :mbox

    # TODO: delegate to Mboxrd::Message

    def initialize(uid:, offset:, length:, mbox:, flags: [])
      @uid = uid
      @offset = offset
      @length = length
      @mbox = mbox
      @flags = flags.map(&:to_sym)
    end

    def to_h
      {
        uid: uid,
        offset: offset,
        length: length,
        flags: flags.map(&:to_s)
      }
    end

    def message
      @message =
        begin
          raw = mbox.read(offset, length)
          Email::Mboxrd::Message.from_serialized(raw)
        end
    end

    def body
      @body ||= message.supplied_body
    end

    def imap_body
      @imap_body ||= message.imap_body
    end

    def date
      @date ||= message.date
    end

    def subject
      @subject ||= message.subject
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
imap-backup-14.4.1 lib/imap/backup/serializer/message.rb
imap-backup-14.4.0 lib/imap/backup/serializer/message.rb
imap-backup-14.3.0 lib/imap/backup/serializer/message.rb
imap-backup-14.2.0 lib/imap/backup/serializer/message.rb