From e3d5171103849fa1ebb98e0772186241a6ea56c1 Mon Sep 17 00:00:00 2001 From: Adam Porter Date: Sat, 2 Apr 2022 11:10:49 -0500 Subject: [PATCH] WIP: Log JSON responses to "*Ement API Log*" buffer See . --- ement-api.el | 17 ++++++++++++++++- ement.el | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ement-api.el b/ement-api.el index ee24940..9352022 100644 --- a/ement-api.el +++ b/ement-api.el @@ -59,7 +59,7 @@ (else #'ement-api-error) (method 'get) ;; FIXME: What's the right term for the URL part after "/_matrix/"? (endpoint-category "client") - (json-read-fn #'json-read) + (json-read-fn #'ement-api--json-read-and-log) ;; NOTE: Hard to say what the default timeouts ;; should be. Sometimes the matrix.org homeserver ;; can get slow and respond a minute or two later. @@ -88,6 +88,21 @@ :as json-read-fn :then then :else else :connect-timeout connect-timeout :timeout timeout :noquery t))) +(defun ement-api--json-read-and-log () + (let ((json-buffer (current-buffer))) + (with-current-buffer (get-buffer-create "*Ement API Log*") + (save-excursion + (goto-char (point-max)) + (let ((beg (point)) + end) + (insert-buffer-substring json-buffer) + (setf end (point)) + (insert "\n") + (save-restriction + (narrow-to-region beg end) + (json-pretty-print-buffer)))))) + (json-read)) + (define-error 'ement-api-error "Ement API error" 'error) (defun ement-api-error (plz-error) diff --git a/ement.el b/ement.el index 1533c29..1ae9890 100644 --- a/ement.el +++ b/ement.el @@ -616,7 +616,7 @@ a filter ID). When unspecified, the value of (- (time-to-seconds) sync-start-time) (file-size-human-readable (buffer-size)))) (let ((start-time (time-to-seconds))) - (prog1 (json-read) + (prog1 (ement-api--json-read-and-log) (when (ement--sync-messages-p session) (message "Ement: Reading JSON took %.2f seconds" (- (time-to-seconds) start-time)))))))))