Sha256: 6ff6fb8cb79cb8e765d20c7e27cf448385593c056843b90fccaa5ca0c8b94e16

Contents?: true

Size: 1.61 KB

Versions: 6

Compression:

Stored size: 1.61 KB

Contents

require "forwardable"

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

module Imap; end

module Imap::Backup
  class Serializer; end

  # Represents a stored message
  class Serializer::Message
    # @return [Array[Symbol]] the message's flags
    attr_accessor :flags
    # @return [Integer] the length of the message (as stored on disk)
    attr_reader :length
    # @return [Integer] the start of the message inside the mailbox file
    attr_reader :offset
    # @return [Integer] the message's UID
    attr_accessor :uid

    extend Forwardable

    def_delegator :message, :supplied_body, :body
    def_delegators :message, :imap_body, :date, :subject

    # @param uid [Integer] the message's UID
    # @param offset [Integer] the start of the message inside the mailbox file
    # @param length [Integer] the length of the message (as stored on disk)
    # @param mbox [Serializer::Mbox] the mailbox containing the message
    # @param flags [Array[Symbol]] the message's flags
    def initialize(uid:, offset:, length:, mbox:, flags: [])
      @uid = uid
      @offset = offset
      @length = length
      @mbox = mbox
      @flags = flags.map(&:to_sym)
    end

    # @return [Hash] the message metadata
    def to_h
      {
        uid: uid,
        offset: offset,
        length: length,
        flags: flags.map(&:to_s)
      }
    end

    # Reads the message text and returns the original form
    # @return [String] the message
    def message
      @message =
        begin
          raw = mbox.read(offset, length)
          Email::Mboxrd::Message.from_serialized(raw)
        end
    end

    private

    attr_reader :mbox
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
imap-backup-15.0.3.rc1 lib/imap/backup/serializer/message.rb
imap-backup-15.0.2 lib/imap/backup/serializer/message.rb
imap-backup-15.0.1 lib/imap/backup/serializer/message.rb
imap-backup-15.0.0 lib/imap/backup/serializer/message.rb
imap-backup-14.6.1 lib/imap/backup/serializer/message.rb
imap-backup-14.6.0 lib/imap/backup/serializer/message.rb