diff options
author | mooseyboots <66318400+mooseyboots@users.noreply.github.com> | 2021-12-21 10:17:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-21 10:17:03 +0100 |
commit | ede05a509ce7b0ae95cb71b20e2516e46038d038 (patch) | |
tree | 6ecd8d9cd18c9f666d9ae7963bf8d2c1f09ea62e /lisp/mastodon-auth.el | |
parent | 0fd2b1c4f58e04760e86e8d475128fb66b8a21a7 (diff) | |
parent | 2a6568d3d9a7b121a4ee760eea0dfb2f91f79fb1 (diff) |
Merge pull request #231 from ieure/handle-auth-errors
Rewrite `mastodon-auth--access-token` so it handles errors.
Diffstat (limited to 'lisp/mastodon-auth.el')
-rw-r--r-- | lisp/mastodon-auth.el | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/lisp/mastodon-auth.el b/lisp/mastodon-auth.el index 231bb70..cfe89b5 100644 --- a/lisp/mastodon-auth.el +++ b/lisp/mastodon-auth.el @@ -124,13 +124,22 @@ Reads and/or stores secres in `MASTODON-AUTH-SOURCE-FILE'." "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)) + (if-let ((token (cdr (assoc mastodon-instance-url mastodon-auth--token-alist)))) + token + + (mastodon-auth--handle-token-response (mastodon-auth--get-token)))) + +(defun mastodon-auth--handle-token-response (response) + (pcase response + ((and (let token (plist-get response :access_token)) + (guard token)) + (cdar (push (cons mastodon-instance-url token) + mastodon-auth--token-alist))) + + (`(:error ,class :error_description ,error) + (error "mastodon-auth--access-token: %s: %s" class error)) + + (_ (error "Unknown response from mastodon-auth--get-token!")))) (defun mastodon-auth--get-account-name () "Request user credentials and return an account name." |