diff options
Diffstat (limited to 'sx-method.el')
-rw-r--r-- | sx-method.el | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/sx-method.el b/sx-method.el index ee1f0b2..a1a2901 100644 --- a/sx-method.el +++ b/sx-method.el @@ -39,7 +39,7 @@ auth (url-method "GET") site) - "Call METHOD with additional keys. + "Call METHOD with additional keys. :ID is the id associated with a question, answer, comment, post or user. @@ -63,46 +63,46 @@ but could still be used without authenticating (i.e a launch/home page). When AUTH is 'warn, methods will signal a `user-error'. This is meant for interactive commands that absolutely require authentication -(submitting questions/answers, reading inbox, etc). Filters will + (submitting questions/answers, reading inbox, etc). Filters will treat 'warn as equivalent to t. Return the entire response as a complex alist." - (let ((access-token (sx-cache-get 'auth)) - (method-auth (sx-auth--method-p method submethod)) - (filter-auth (sx-auth--filter-p filter)) - (full-method (concat (format "%s" method) - (when id - (format "/%s" id)) - (when submethod - (format "/%s" submethod)))) - (call 'sx-request-make)) - (lwarn "sx-call-method" :debug "A: %S T: %S. M: %S,%s. F: %S" (equal 'warn auth) - access-token method-auth full-method filter-auth) - (unless access-token - (cond - ;; 1. Need auth and warn user (interactive use) - ((and method-auth (equal 'warn auth)) - (user-error - "This request requires authentication. Please run `M-x sx-auth-authenticate' and try again.")) - ;; 2. Need auth to populate UI, cannot provide subset - ((and method-auth auth) - (setq call 'sx-request-fallback)) - ;; 3. Need auth for type. Use auth-less filter. - ((and filter-auth auth) - (setq filter filter-auth)) - ;; 4. Requires auth but no value set for auth - ((and (or filter-auth method-auth) (not auth)) - (error "This request requires authentication.")))) - ;; Concatenate all parameters now that filter is ensured. - (setq parameters - (cons `(site . ,site) - (cons (cons 'filter - (sx-filter-get-var filter)) - keywords))) - (funcall call - full-method - parameters - url-method))) + (let ((access-token (sx-cache-get 'auth)) + (method-auth (sx-auth--method-p method submethod)) + (filter-auth (sx-auth--filter-p filter)) + (full-method (concat (format "%s" method) + (when id + (format "/%s" id)) + (when submethod + (format "/%s" submethod)))) + (call 'sx-request-make)) + (lwarn "sx-call-method" :debug "A: %S T: %S. M: %S,%s. F: %S" (equal 'warn auth) + access-token method-auth full-method filter-auth) + (unless access-token + (cond + ;; 1. Need auth and warn user (interactive use) + ((and method-auth (equal 'warn auth)) + (user-error + "This request requires authentication. Please run `M-x sx-auth-authenticate' and try again.")) + ;; 2. Need auth to populate UI, cannot provide subset + ((and method-auth auth) + (setq call 'sx-request-fallback)) + ;; 3. Need auth for type. Use auth-less filter. + ((and filter-auth auth) + (setq filter filter-auth)) + ;; 4. Requires auth but no value set for auth + ((and (or filter-auth method-auth) (not auth)) + (error "This request requires authentication.")))) + ;; Concatenate all parameters now that filter is ensured. + (setq parameters + (cons `(site . ,site) + (cons (cons 'filter + (sx-filter-get-var filter)) + keywords))) + (funcall call + full-method + parameters + url-method))) (provide 'sx-method) ;;; sx-method.el ends here |