Basic navigation methods

This commit is contained in:
Daniel Ziltener 2022-05-13 15:54:51 +02:00
parent a90caba4a5
commit f75d860d5f
1 changed files with 30 additions and 0 deletions

View File

@ -38,6 +38,11 @@
(define-method (terminate-session (browser <Browser>))
(send browser '() (string-append "session/" (session browser)) 'DELETE))
(define-method (send-with-session (browser <Browser>) struct path method)
(send browser struct
(string-append "session/" (session browser) "/" path)
method))
;; TODO: Apparently session has to be closed first
(define-method (terminate (browser <Browser>))
(call/cc
@ -66,3 +71,28 @@
(define-method (send (browser <Firefox>) struct path method)
(let ((result (call-next-method)))
(alist-ref 'value result)))
;; =======================
;; Main API Implementation
;; =======================
(define-method (forward! (browser <Browser>))
(send-with-session browser '() "forward" 'POST))
(define-method (back! (browser <Browser>))
(send-with-session browser '() "back" 'POST))
(define-method (refresh! (browser <Browser>))
(send-with-session browser '() "refresh" 'POST))
(define-method (url (browser <Browser>))
(send-with-session browser '() "url" 'GET))
(define-method (url! (browser <Browser>) (uri <string>))
(send-with-session browser `((url . ,uri)) "url" 'POST))
(define-method (title (browser <Browser>))
(send-with-session browser '() "title" 'GET))
(define-method (source (browser <Browser>))
(send-with-session browser '() "source" 'GET))