Sha256: eaff8d391b8a4de4216fc69ea232a677eef6585c2bfca03917b80e7ca7dd7913

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

# encoding: utf-8
require 'fileutils'

module Imap
  module Backup
    module Serializer
      class Directory < Base
        def initialize(path, folder)
          super
          Imap::Backup::Utils.make_folder(@path, @folder, DIRECTORY_PERMISSIONS)
        end

        def uids
          return [] if ! File.exist?(directory)

          d = Dir.open(directory)
          as_strings = d.map do |file|
            file[/^0*(\d+).json$/, 1]
          end.compact
          as_strings.map(&:to_i).sort
        end

        def exist?(uid)
          message_filename = filename(uid)
          File.exist?(message_filename)
        end

        def save(uid, message)
          message_filename = filename(uid)
          File.open(message_filename, 'w') { |f| f.write message.to_json }
          FileUtils.chmod 0600, message_filename
        end

        private

        def directory
          File.join(@path, @folder)
        end

        def filename(uid)
          "#{directory}/%012u.json" % uid.to_i
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
imap-backup-1.0.5 lib/imap/backup/serializer/directory.rb
imap-backup-1.0.4 lib/imap/backup/serializer/directory.rb
imap-backup-1.0.3 lib/imap/backup/serializer/directory.rb
imap-backup-1.0.2 lib/imap/backup/serializer/directory.rb
imap-backup-1.0.1 lib/imap/backup/serializer/directory.rb
imap-backup-1.0.0 lib/imap/backup/serializer/directory.rb