lib/gmail/client.rb
module Gmail
module Client
# Raised when connection with Gmail IMAP service couldn't be established.
class ConnectionError < SocketError; end
# Raised when given username or password are invalid.
class AuthorizationError < Net::IMAP::NoResponseError; end
# Raised when delivered email is invalid.
class DeliveryError < ArgumentError; end
# Raised when given client is not registered
class UnknownClient < ArgumentError; end
# Raised when email not found
class EmailNotFound < ArgumentError; end
def self.clients
@clients ||= {}
end
def self.register(name, klass)
clients[name] = klass
end
def self.new(name, *args)
if client = clients[name]
return client.new(*args)
end
raise UnknownClient, "No such client: #{name}"
end
require 'gmail/imap_extensions'
require 'gmail/client/base'
require 'gmail/client/plain'
require 'gmail/client/xoauth'
require 'gmail/client/xoauth2'
end # Client
end # Gmail