Rewrite of auth-source.el and change all the API calls.
authorTed Zlatanov <tzz@lifelogs.com>
Sat, 12 Feb 2011 13:37:18 +0000 (07:37 -0600)
committerTed Zlatanov <tzz@lifelogs.com>
Sat, 12 Feb 2011 13:41:17 +0000 (07:41 -0600)
commit37efc98493b86d09a0a2d198030884ebedeafc75
treee39edc634c3688a1295286bd5cd0fa2b57f85205
parent2e087cb0e6a334fd151911b19ed234b88fb292fd
Rewrite of auth-source.el and change all the API calls.

Merged from tzz-auth-source-rewrite branch with slight rebasing to
preserve 0bca1908b8a435b5ade1dbebeb9f98207e81d9c4 and
bcfcbbaf5361e3019ab21b4e96967150f74e2a62 to nntp.el and
proto-stream.el respectively.

* sieve-manage.el: Autoload `auth-source-search'.
(sieve-sasl-auth): Use it.

* nnimap.el: Autoload `auth-source-forget+'.
(nnimap-open-connection-1): Use it if the connection fails.

* password-cache.el (password-cache-remove): Accept secrets that are
not strings.

* mail-source.el: Autoload `auth-source-search'.
(mail-source-keyword-map): Note order matters.
(mail-source-set-1): Get all the mail-source source values and
defaults and search auth-source on those if needed.  This can all
probably be simplified.

* nnimap.el: Autoload `auth-source-search'.
(nnimap-credentials): Use it.
(nnimap-open-connection-1): Ask for the virtual server and physical
address in one shot.

* nntp.el: Autoload `auth-source-search'.
(nntp-send-authinfo): Use it.  Note TODO.

* auth-source.el: Require `password-cache'.
(auth-source-hide-passwords, auth-source-cache): Remove and mark
obsolete.
(auth-source-magic): Marker for `password-cache' keys.
(auth-source-do-cache): Update docstring.
(auth-source-search): Use and check cache.
(auth-source-forget-all-cached, auth-source-remember)
(auth-source-recall, auth-source-forget, auth-source-forget+)
(auth-source-specmatchp): Caching support functions.
(auth-source-forget-user-or-password, auth-source-forget-all-cached):
Remove and obsolete.
(auth-source-user-or-password): Remove caching to further discourage
using it.  Always hide passwords.

* auth-source.el (auth-source-secrets-search)
(auth-source-user-or-password): Use `append' instead of `nconc'.
(auth-source-user-or-password): Build return list better and protect
against nil :secret.

* auth-source.el (top): Require 'eieio unconditionally.  Autoload
`secrets-get-attributes' instead of `secrets-get-attribute'.
(auth-source-secrets-search): Limit search when `max' is greater than
number of results.

* auth-source.el (auth-source-secrets-search): Add examples.

* auth-source.el (auth-sources): Allow for simpler defaults for Secrets
API with a string "secrets:collection-name" and with 'default.
(auth-source-backend-parse): Parse "secrets:collection-name" and
'default.  Recurse on parses instead of repeating code.  Use the
Secrets API is the source is not nil and 'ignore otherwise.  Emit a
message when ignoring a source.
(auth-source-search): List ignored search keys at the top level.
(auth-source-netrc-create): Use `case' instead of `cond'.
(auth-source-secrets-search): Created with TODOs.
(auth-source-secrets-create): Created with TODOs.
(auth-source-retrieve, auth-source-create, auth-source-delete)
(auth-source-protocol-defaults, auth-source-user-or-password-imap)
(auth-source-user-or-password-pop3, auth-source-user-or-password-ssh)
(auth-source-user-or-password-sftp)
(auth-source-user-or-password-smtp): Removed.
(auth-source-user-or-password): Deprecated and modified to be a wrapper
around `auth-source-search'.  Not tested thoroughly.

* auth-source.el: Bring in assoc and eioeio libraries.
(secrets-enabled): New variable to track the status of the Secrets API.
(auth-source-backend): New EIOEIO class to represent a backend.
(auth-source-creation-defaults): New variable to set prompt defaults
during token creation (see the `auth-source-search' docstring for
details).
(auth-sources): Simplify to allow a simple string as a netrc backend
spec.
(auth-source-backend-parse): Parse a backend from an `auth-sources' spec.
(auth-source-backend-parse-parameters): Fill in the backend parameters.
(auth-source-search): Main auth-source API entry point.
(auth-source-delete): Wrapper around `auth-source-search' for deletion.
(auth-source-search-collection): Helper function for searching.
(auth-source-netrc-parse, auth-source-netrc-normalize)
(auth-source-netrc-search, auth-source-netrc-create): Netrc backend.
Supports search, create, and delete.
(auth-source-secrets-search, auth-source-secrets-create): Secrets API
backend stubs.
(auth-source-user-or-password): Call `auth-source-search' but it's not
ready yet.
lisp/nntp.el
lisp/proto-stream.el