From bd9d8c20f70fbc9c9ff65274410838941fa08042 Mon Sep 17 00:00:00 2001 From: Rahguzar Date: Mon, 30 Jun 2025 14:58:06 +0500 Subject: [PATCH] * lisp/url/url-queue.el: Better compatibility with 'url-retrieve' (url-queue): New slots to hold request related variables. (url-queue-retrieve): Capture the request related variables. (url-queue-start-retrieve): Let bind the request related variables. (Bug#78928) * etc/NEWS: Announce changes. --- etc/NEWS | 9 +++++++++ lisp/url/url-queue.el | 30 +++++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 4999100c5f0..00387d09619 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1402,6 +1402,15 @@ HTML 'doctype' declaration to have context-type "text/html". When there is no EWW buffer, 'eww-switch-to-buffer' falls back to calling 'eww'. +** Url Queue + +--- +*** 'url-queue-retrieve' now makes use of some url request variables +The variables 'url-request-data', 'url-request-method', and +'url-request-extra-headers' can now be bound around a call to +'url-queue-retrieve'. Binding them has the same effect as for +'url-retrieve'. + ** CC mode +++ diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index 746648e0aa1..d528dc7631e 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el @@ -53,7 +53,8 @@ (cl-defstruct url-queue url callback cbargs silentp buffer start-time pre-triggered - inhibit-cookiesp context-buffer) + inhibit-cookiesp context-buffer + request-data request-method request-extra-headers) ;;;###autoload (defun url-queue-retrieve (url callback &optional cbargs silent inhibit-cookies) @@ -63,13 +64,17 @@ but with limits on the degree of parallelism. The variable `url-queue-parallel-processes' sets the number of concurrent processes. The variable `url-queue-timeout' sets a timeout." (setq url-queue - (append url-queue - (list (make-url-queue :url url - :callback callback - :cbargs cbargs - :silentp silent - :inhibit-cookiesp inhibit-cookies - :context-buffer (current-buffer))))) + (append url-queue + (list (make-url-queue + :url url + :callback callback + :cbargs cbargs + :silentp silent + :inhibit-cookiesp inhibit-cookies + :context-buffer (current-buffer) + :request-data url-request-data + :request-method url-request-method + :request-extra-headers url-request-extra-headers)))) (url-queue-setup-runners)) ;; To ensure asynch behavior, we start the required number of queue @@ -155,13 +160,16 @@ The variable `url-queue-timeout' sets a timeout." (defun url-queue-start-retrieve (job) (setf (url-queue-buffer job) - (ignore-errors + (ignore-errors (with-current-buffer (if (buffer-live-p (url-queue-context-buffer job)) (url-queue-context-buffer job) (current-buffer)) - (let ((url-request-noninteractive t) - (url-allow-non-local-files t)) + (let ((url-request-noninteractive t) + (url-allow-non-local-files t) + (url-request-data (url-queue-request-data job)) + (url-request-method (url-queue-request-method job)) + (url-request-extra-headers (url-queue-request-extra-headers job))) (url-retrieve (url-queue-url job) #'url-queue-callback-function (list job) (url-queue-silentp job)