summaryrefslogtreecommitdiff
path: root/lisp/servall-client.el
diff options
context:
space:
mode:
authorYuchen Pei <hi@ypei.me>2022-09-13 12:04:28 +1000
committerYuchen Pei <hi@ypei.me>2022-09-13 12:04:28 +1000
commit0badf7a7160e297b04bf198d23e890bce2629a57 (patch)
treead3a783921b0254cd2a4e45a4b3c9f7e09904960 /lisp/servall-client.el
parent93928f9212d340992050e2adcbdd5d51114e7d1e (diff)
added ytdl search
Diffstat (limited to 'lisp/servall-client.el')
-rw-r--r--lisp/servall-client.el63
1 files changed, 39 insertions, 24 deletions
diff --git a/lisp/servall-client.el b/lisp/servall-client.el
index 80376e7..cb01aed 100644
--- a/lisp/servall-client.el
+++ b/lisp/servall-client.el
@@ -1,5 +1,3 @@
-;; -*- lexical-binding: t; -*-
-
(defvar servall-endpoint "localhost:5555")
(defvar servall-client-buffer-name "*servall-client*")
@@ -7,6 +5,10 @@
(servall-url-fetch-json
(concat servall-endpoint "/wikipedia/search/" query)))
+(defun servall-api-ytdl-search (query cb)
+ (servall-url-fetch-json-async
+ (concat servall-endpoint "/ytdl/search/" query) cb))
+
(defun servall-api-wikipedia-org (name)
(servall-url-fetch-json
(concat servall-endpoint "/wikipedia/org/" name)))
@@ -27,27 +29,40 @@
(goto-char (point-max))
(insert "[" (current-time-string) "] Request: " url "\n"))
(with-current-buffer (url-retrieve-synchronously url t)
- (let ((header) (status) (fields) (json))
- (delete-http-header)
- (setq header (servall-parse-http-header (car kill-ring))
- status (alist-get 'status header)
- fields (alist-get 'fields header))
- (with-current-buffer servall-client-buffer-name
- (insert "[" (current-time-string) "] Response: " status "\n"))
- (when decompression
- (call-process-region (point) (point-max) "gunzip" t t t)
- (goto-char (point-min)))
- (call-interactively 'delete-trailing-whitespace)
- (if (string= status "200")
- (unless (= (point) (point-max))
- (setq json (json-read-from-string
- (decode-coding-string
- (buffer-string) 'utf-8)))
- (if with-header
- (list
- (cons 'header fields)
- (cons 'json json))
- json))
- (error "HTTP error: %s" (buffer-substring (point) (point-max)))))))
+ (servall-url-fetch-json-callback nil nil decompression with-header)))
+
+(defun servall-url-fetch-json-async (url cb &optional decompression with-header)
+ (with-current-buffer (get-buffer-create servall-client-buffer-name)
+ (goto-char (point-max))
+ (insert "[" (current-time-string) "] Request: " url "\n"))
+ (url-retrieve url 'servall-url-fetch-json-callback
+ (list cb decompression with-header) t))
+
+(defun servall-url-fetch-json-callback (unused cb decompression with-header)
+ (let ((header) (status) (fields) (json) (result))
+ (delete-http-header)
+ (setq header (servall-parse-http-header (car kill-ring))
+ status (alist-get 'status header)
+ fields (alist-get 'fields header))
+ (with-current-buffer servall-client-buffer-name
+ (insert "[" (current-time-string) "] Response: " status "\n"))
+ (when decompression
+ (call-process-region (point) (point-max) "gunzip" t t t)
+ (goto-char (point-min)))
+ (call-interactively 'delete-trailing-whitespace)
+ (if (string= status "200")
+ (unless (= (point) (point-max))
+ (setq json (json-read-from-string
+ (decode-coding-string
+ (buffer-string) 'utf-8)))
+ (setq result
+ (if with-header
+ (list
+ (cons 'header fields)
+ (cons 'json json))
+ json)))
+ (error "HTTP error: %s" (buffer-substring (point) (point-max))))
+ (if cb (funcall cb result)
+ result)))
(provide 'servall-client)