Sha256: 31ad5c2eed69c164eb918a2eb4aa4133d3c9d9c1a0c8eeb9b4ac869093a1783b

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 KB

Contents

require 'net/imap'

module Imap
  module Backup
    module Account
      class Connection
        attr_reader :username
        attr_reader :imap

        def initialize(options)
          @username = options[:username]
          @local_path, @backup_folders = options[:local_path], options[:folders]
          @imap = Net::IMAP.new(options[:server] || 'imap.gmail.com', 993, true)
          @imap.login(@username, options[:password])
        end

        def disconnect
          @imap.disconnect
        end

        def folders
          @imap.list('/', '*')
        end

        def status
          @backup_folders.map do |folder|
            f = Imap::Backup::Account::Folder.new(self, folder[:name])
            s = Imap::Backup::Serializer::Directory.new(@local_path, folder[:name])
            {:name => folder[:name], :local => s.uids, :remote => f.uids}
          end
        end

        def run_backup
          @backup_folders.each do |folder|
            f = Imap::Backup::Account::Folder.new(self, folder[:name])
            s = Imap::Backup::Serializer::Mbox.new(@local_path, folder[:name])
            d = Imap::Backup::Downloader.new(f, s)
            d.run
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
imap-backup-1.0.3 lib/imap/backup/account/connection.rb
imap-backup-1.0.2 lib/imap/backup/account/connection.rb
imap-backup-1.0.1 lib/imap/backup/account/connection.rb
imap-backup-1.0.0 lib/imap/backup/account/connection.rb