diff --git a/chicken-on-a-raft.impl.scm b/chicken-on-a-raft.impl.scm index 97973cb..1cc1030 100644 --- a/chicken-on-a-raft.impl.scm +++ b/chicken-on-a-raft.impl.scm @@ -38,6 +38,11 @@ (define-method (terminate-session (browser )) (send browser '() (string-append "session/" (session browser)) 'DELETE)) +(define-method (send-with-session (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 )) (call/cc @@ -66,3 +71,28 @@ (define-method (send (browser ) struct path method) (let ((result (call-next-method))) (alist-ref 'value result))) + +;; ======================= +;; Main API Implementation +;; ======================= + +(define-method (forward! (browser )) + (send-with-session browser '() "forward" 'POST)) + +(define-method (back! (browser )) + (send-with-session browser '() "back" 'POST)) + +(define-method (refresh! (browser )) + (send-with-session browser '() "refresh" 'POST)) + +(define-method (url (browser )) + (send-with-session browser '() "url" 'GET)) + +(define-method (url! (browser ) (uri )) + (send-with-session browser `((url . ,uri)) "url" 'POST)) + +(define-method (title (browser )) + (send-with-session browser '() "title" 'GET)) + +(define-method (source (browser )) + (send-with-session browser '() "source" 'GET))