diff options
-rw-r--r-- | l/src/main.lisp | 34 |
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)) |