Sha256: 3c84be625920dc8c4e8fe352619f242324947335d06430c2832c151d240bdd6b

Contents?: true

Size: 1.22 KB

Versions: 10

Compression:

Stored size: 1.22 KB

Contents

require "socket"

require "imap/backup/client/apple_mail"
require "imap/backup/client/automatic_login_wrapper"
require "imap/backup/client/default"
require "imap/backup/email/provider"

module Imap; end

module Imap::Backup
  class Account; end

  # Returns an IMAP client set up for the supplied account
  class Account::ClientFactory
    def initialize(account:)
      @account = account
      @provider = nil
      @server = nil
    end

    # @return [Client::AutomaticLoginWrapper] a client for the account
    def run
      options = provider_options
      Logger.logger.debug(
        "Creating IMAP instance: #{server}, options: #{options.inspect}"
      )
      client =
        if provider.is_a?(Email::Provider::AppleMail)
          Client::AppleMail.new(server, account, options)
        else
          Client::Default.new(server, account, options)
        end
      Client::AutomaticLoginWrapper.new(client: client)
    end

    private

    attr_reader :account

    def provider
      @provider ||= Email::Provider.for_address(account.username)
    end

    def provider_options
      provider.options.merge(account.connection_options || {})
    end

    def server
      @server ||= account.server || provider.host
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
imap-backup-15.0.3.rc1 lib/imap/backup/account/client_factory.rb
imap-backup-15.0.2 lib/imap/backup/account/client_factory.rb
imap-backup-15.0.1 lib/imap/backup/account/client_factory.rb
imap-backup-15.0.0 lib/imap/backup/account/client_factory.rb
imap-backup-14.6.1 lib/imap/backup/account/client_factory.rb
imap-backup-14.6.0 lib/imap/backup/account/client_factory.rb
imap-backup-14.5.2 lib/imap/backup/account/client_factory.rb
imap-backup-14.5.1 lib/imap/backup/account/client_factory.rb
imap-backup-14.5.0 lib/imap/backup/account/client_factory.rb
imap-backup-14.4.5 lib/imap/backup/account/client_factory.rb