aboutsummaryrefslogtreecommitdiffstats
path: root/l/src/main.lisp
diff options
context:
space:
mode:
authorTeddy Wing2021-01-24 11:43:41 +0100
committerTeddy Wing2021-01-24 11:43:41 +0100
commit2154898790426d141ebd3ea1f6eb0adc50542489 (patch)
treeae5fcae1c8d3ae5da4e1ffe65b501d033f7d5782 /l/src/main.lisp
parent336f3761ab63ac95d12a7699a387b6fee17c852d (diff)
downloadextreload-2154898790426d141ebd3ea1f6eb0adc50542489.tar.bz2
main.lisp: Filter DevTools targets to chosen extensions
Filter a list of extension background page targets. The extension IDs should come from the command line, but I've hard-coded the list here. Increased the `sleep` time to allow time for the messages to be sent & received before the program exits. Will need to figure out a proper way to do this later.
Diffstat (limited to 'l/src/main.lisp')
-rw-r--r--l/src/main.lisp34
1 files changed, 32 insertions, 2 deletions
diff --git a/l/src/main.lisp b/l/src/main.lisp
index 50acdc3..22cd7f0 100644
--- a/l/src/main.lisp
+++ b/l/src/main.lisp
@@ -9,7 +9,7 @@
(wsd:send *client* (get-targets-msg 1))
- (sleep 1)
+ (sleep 5)
(wsd:close-connection *client*))
@@ -21,7 +21,10 @@
(defun ws-on-message (message)
(let* ((response (jsown:parse message))
(targets (parse-get-targets-response response)))
- (format t "~&Got: ~A~%" targets)))
+ (if targets
+ (reload-extensions
+ (extension-targets targets)
+ '("pacpdcpgfbpkdpmhfaljffnfbdanmblh")))))
(defun parse-get-targets-response (response)
(let* ((result (json-obj-get response "result"))
@@ -35,3 +38,30 @@
(let ((s (format nil "~A" e)))
(if (search "not available" s)
nil)))))
+
+(defun reload-extensions (targets extension-ids)
+ (labels ((requested-extension-p (target)
+ (dolist (id extension-ids)
+ (if (uiop:string-prefix-p
+ (concatenate 'string "chrome-extension://" id)
+ (json-obj-get target "url"))
+ (return-from requested-extension-p t)))
+
+ nil))
+
+ (filter #'requested-extension-p targets)))
+
+(defun extension-targets (targets)
+ (labels ((extensionp (target)
+ (equal (json-obj-get target "type")
+ "background_page")))
+
+ (filter #'extensionp targets)))
+
+(defun filter (predicate list-form)
+ (let (newl '())
+ (dolist (el list-form)
+ (if (funcall predicate el)
+ (push el newl)))
+
+ newl))