diff options
author | Holger Dürer <me@hdurer.net> | 2018-02-28 20:48:24 +0000 |
---|---|---|
committer | Holger Dürer <me@hdurer.net> | 2018-03-02 20:18:22 +0000 |
commit | b774f9e5295341a68171d94765320114d0b5b407 (patch) | |
tree | 5e055a479aa6af15e524bca313ab557c8130684e /lisp/mastodon-auth.el | |
parent | 3e9bdbf2eeecafd7bb0673f2709f816a740c7d61 (diff) |
Keep track of to which instance secrets in plstore belong.
While testing out issue
149 (https://github.com/jdenen/mastodon.el/issues/149) I had problems
due to stale client information being cached.
With this change we store various pieces of information (the client
information in the plstore and the auth tokens) in alists keyed by the
instance url (and the plstore key contains the instance url as well to
allow us to store data per instance).
Diffstat (limited to 'lisp/mastodon-auth.el')
-rw-r--r-- | lisp/mastodon-auth.el | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/lisp/mastodon-auth.el b/lisp/mastodon-auth.el index 83d7d04..b2399d2 100644 --- a/lisp/mastodon-auth.el +++ b/lisp/mastodon-auth.el @@ -40,8 +40,8 @@ :prefix "mastodon-auth-" :group 'mastodon) -(defvar mastodon-auth--token nil - "User access token.") +(defvar mastodon-auth--token-alist nil + "Alist of User access tokens keyed by instance url.") (defun mastodon-auth--generate-token () "Make POST to generate auth token." @@ -53,7 +53,8 @@ ("username" . ,(read-string "Email: ")) ("password" . ,(read-passwd "Password: ")) ("scope" . "read write follow")) - nil)) + nil + :unauthenticated)) (defun mastodon-auth--get-token () "Make auth token request and return JSON response." @@ -67,13 +68,16 @@ (json-read-from-string json-string)))) (defun mastodon-auth--access-token () - "Return `mastodon-auth--token'. - -Generate token and set `mastodon-auth--token' if nil." - (or mastodon-auth--token - (let* ((json (mastodon-auth--get-token)) - (token (plist-get json :access_token))) - (setq mastodon-auth--token token)))) + "Return the access token to use with the current `mastodon-instance-url'. + +Generate token and set if none known yet." + (let ((token + (cdr (assoc mastodon-instance-url mastodon-auth--token-alist)))) + (unless token + (let ((json (mastodon-auth--get-token))) + (setq token (plist-get json :access_token)) + (push (cons mastodon-instance-url token) mastodon-auth--token-alist))) + token)) (provide 'mastodon-auth) ;;; mastodon-auth.el ends here |