branch: externals/url-http-oauth-demo
commit f2d8a1a4bb6c40d0488abe2fb7b3e938392419d6
Author: Thomas Fitzsimmons <fitz...@fitzsim.org>
Commit: Thomas Fitzsimmons <fitz...@fitzsim.org>

    url-http-oauth-demo-get-profile-name is working
    
    * url-http-oauth-demo.el: Call url-http-oauth-register-resource.
    (url-http-oauth-demo-get-api-version): New function.
    (url-http-oauth-demo-get-profile-name): Likewise.
---
 url-http-oauth-demo.el | 41 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 38 insertions(+), 3 deletions(-)

diff --git a/url-http-oauth-demo.el b/url-http-oauth-demo.el
index 902475f37a..4874a290cc 100644
--- a/url-http-oauth-demo.el
+++ b/url-http-oauth-demo.el
@@ -36,14 +36,49 @@
 ;;; Register "https://meta.sr.ht/query"; as needing OAuth 2.0 for
 ;;; authentication.
 ;;;###autoload
-(url-http-oauth-register-provider "https://meta.sr.ht/query";
+(url-http-oauth-register-resource "https://meta.sr.ht/query";
                                   "https://meta.sr.ht/oauth2/authorize";
                                   "https://meta.sr.ht/oauth2/access-token";
                                   "107ba4a9-2a96-4420-8818-84ec1f112405"
                                   "meta.sr.ht/PROFILE:RO")
 
-;; FIXME: Make an authenticated API call using "meta.sr.ht/PROFILE:RO"
-;; to prove the OAuth 2.0 procedure was successful.
+;;;###autoload
+(defun url-http-oauth-demo-get-api-version ()
+  "Asynchronously retrieve the Sourcehut GraphQL API version.
+Print the HTTP status and response in *Messages*."
+  (interactive)
+  (let ((url-request-method "POST")
+        (url-request-extra-headers
+        (list (cons "Content-Type" "application/json")
+               (cons "Authorization" "Bearer abcd")))
+        (url-request-data
+         "{\"query\": \"{ version { major, minor, patch } }\"}"))
+    (url-retrieve "https://meta.sr.ht/query";
+                  (lambda (status)
+                    (message "%S, %S"
+                             status (buffer-string))))))
+
+;;;###autoload
+(defun url-http-oauth-demo-get-profile-name ()
+  "Asynchronously retrieve the Sourcehut profile name.
+Print the result to *Messages*."
+  (interactive)
+  (let ((url-request-method "POST")
+        (url-request-extra-headers
+        (list (cons "Content-Type" "application/json")))
+        (url-request-data
+         "{\"query\": \"{ me { canonicalName } }\"}"))
+    (url-retrieve "https://meta.sr.ht/query";
+                  (lambda (status)
+                    (message "STR: %s" (buffer-string))
+                    (goto-char (point-min))
+                    (re-search-forward "\n\n")
+                    
+                    (let* ((result (json-parse-buffer))
+                           ;;(me (gethash "me" result))
+                           ;;(name me)
+                           )
+                      (message "%S" result))))))
 
 (provide 'url-http-oauth-demo)
 

Reply via email to