feat: add SSE connect/disconnect public API
This commit is contained in:
@@ -100,5 +100,41 @@ Handles connection close and triggers reconnection."
|
||||
(run-with-timer noise-sse--reconnect-delay nil
|
||||
#'noise-sse-connect)))
|
||||
|
||||
;;;###autoload
|
||||
(defun noise-sse-connect ()
|
||||
"Connect to signal-cli SSE endpoint."
|
||||
(interactive)
|
||||
(noise-sse-disconnect)
|
||||
(let* ((url (noise-sse--build-url))
|
||||
(parsed (url-generic-parse-url url))
|
||||
(host (url-host parsed))
|
||||
(port (or (url-port parsed) 80))
|
||||
(proc (make-network-process
|
||||
:name "noise-sse"
|
||||
:host host
|
||||
:service port
|
||||
:filter #'noise-sse--filter
|
||||
:sentinel #'noise-sse--sentinel)))
|
||||
(setq noise-sse--process proc)
|
||||
(noise-sse--reset-reconnect-delay)
|
||||
(process-send-string proc
|
||||
(format "GET %s HTTP/1.1\r\nHost: %s\r\nAccept: text/event-stream\r\n\r\n"
|
||||
(url-filename parsed)
|
||||
host))
|
||||
(message "Noise: SSE connected to %s" url)))
|
||||
|
||||
;;;###autoload
|
||||
(defun noise-sse-disconnect ()
|
||||
"Disconnect from signal-cli SSE endpoint."
|
||||
(interactive)
|
||||
(when noise-sse--process
|
||||
(delete-process noise-sse--process)
|
||||
(setq noise-sse--process nil))
|
||||
(when noise-sse--reconnect-timer
|
||||
(cancel-timer noise-sse--reconnect-timer)
|
||||
(setq noise-sse--reconnect-timer nil))
|
||||
(setq noise-sse--buffer "")
|
||||
(message "Noise: SSE disconnected"))
|
||||
|
||||
(provide 'noise-sse)
|
||||
;;; noise-sse.el ends here
|
||||
|
||||
@@ -95,5 +95,20 @@
|
||||
(should (string-match-p "/api/v1/events" url))
|
||||
(should-not (string-match-p "account=" url)))))
|
||||
|
||||
(ert-deftest noise-sse-connect-is-interactive ()
|
||||
"noise-sse-connect is an interactive command."
|
||||
(should (commandp 'noise-sse-connect)))
|
||||
|
||||
(ert-deftest noise-sse-disconnect-is-interactive ()
|
||||
"noise-sse-disconnect is an interactive command."
|
||||
(should (commandp 'noise-sse-disconnect)))
|
||||
|
||||
(ert-deftest noise-sse-disconnect-cleans-up ()
|
||||
"noise-sse-disconnect cleans up process and timer."
|
||||
(let ((noise-sse--reconnect-timer (run-with-timer 1000 nil #'ignore)))
|
||||
(noise-sse-disconnect)
|
||||
(should (null noise-sse--process))
|
||||
(should (null noise-sse--reconnect-timer))))
|
||||
|
||||
(provide 'noise-sse-test)
|
||||
;;; noise-sse-test.el ends here
|
||||
|
||||
Reference in New Issue
Block a user