diff options
| author | Frederick Muriuki Muriithi | 2026-03-12 12:19:25 -0500 |
|---|---|---|
| committer | Frederick Muriuki Muriithi | 2026-03-12 12:34:23 -0500 |
| commit | d19fcd79a028e649cb8ab3e42f5796bc353309ed (patch) | |
| tree | cc440a0da5013a440e7f2e5a7a83a846f0de5a57 /web | |
| parent | f0f0ba92544a150f08cf26c56e19988309d7135e (diff) | |
| download | gn-guile-d19fcd79a028e649cb8ab3e42f5796bc353309ed.tar.gz | |
Remove global settings. Pass settings to function as arguments.
Eliminate the use of global settings and pass in configuration values as arguments to the functions that use them.
Diffstat (limited to 'web')
| -rw-r--r-- | web/webserver.scm | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/web/webserver.scm b/web/webserver.scm index 891f4f9..69f5098 100644 --- a/web/webserver.scm +++ b/web/webserver.scm @@ -37,11 +37,6 @@ (if dot-pos (substring filename dot-pos) ""))) -;; Look into moving this into a config file. -(define +local-repo-checkout-path+ (getenv "CURRENT_REPO_PATH")) -(define +remote-repo-url+ (getenv "CGIT_REPO_PATH")) -(define +working-branch+ (getenv "GN_GUILE_WORKING_BRANCH")) - (define +info+ `(("name" . "GeneNetwork REST API") ("version" . ,get-version) ("comment" . "This is the official REST API for the GeneNetwork service hosted at https://genenetwork.org/") @@ -235,7 +230,7 @@ otherwise search for set/group data" (format #f "The Key *** ~a *** is missing in your Json Data" target)))) -(define (commit-file-handler repo request body) +(define (commit-file-handler repo-checkout remote-url request body) (catch 'system-error (lambda () (let* ((post-data (decode-request-json body)) @@ -252,14 +247,14 @@ otherwise search for set/group data" (build-json-response 200 ((lambda () (let ((message - (commit-file +local-repo-checkout-path+ + (commit-file repo-checkout file-name content commit-message username email prev-commit))) - (git-invoke +local-repo-checkout-path+ "push" +remote-repo-url+) + (git-invoke repo-checkout "push" remote-url) message)))))) (lambda (key . args) (let ((msg (car args))) @@ -275,7 +270,7 @@ otherwise search for set/group data" 'application/x-nice-microdata accept))) -(define (controller request body) +(define (controller request body config) (match-lambda (('GET) (render-json +info+)) @@ -332,9 +327,13 @@ otherwise search for set/group data" (('GET "species") (render-json (get-species-meta))) (('GET "edit") - (edit-file-handler +local-repo-checkout-path+ +working-branch+ request)) + (edit-file-handler (gn-guile-config-gn-docs-local-checkout config) + (gn-guile-config-gn-docs-working-branch config) + request)) (('POST "commit") - (commit-file-handler +local-repo-checkout-path+ request body)) + (commit-file-handler (gn-guile-config-gn-docs-local-checkout config) + (gn-guile-config-gn-docs-remote-url config) + request body)) (('GET id) (let ((names (get-species-shortnames (get-expanded-species)))) (match (string->list id) @@ -373,16 +372,16 @@ otherwise search for set/group data" (define (request-path-components request) (split-and-decode-uri-path (uri-path (request-uri request)))) -(define (handler request body) +(define (handler request body config) (format #t "~a ~a\n" (request-method request) (uri-path (request-uri request))) (apply values - ((controller request body) + ((controller request body config) (cons (request-method request) (request-path-components request))))) -(define (start-web-server address port) +(define (start-web-server address port config) (format (current-error-port) "GN REST API web server listening on http://~a:~a/~%" address port) ;; Wrap handler in another function to support live hacking via the @@ -390,7 +389,7 @@ otherwise search for set/group data" ;; REPL, the web server will still be using the old handler. The ;; only way to update the handler reference held by the web server ;; would be to restart the web server. - (run-server (cut handler <> <>) + (run-server (cut handler <> <> config) 'http (list #:addr (inet-pton AF_INET address) #:port port))) @@ -404,4 +403,4 @@ otherwise search for set/group data" (when (option-ref options 'write) (options-write options)) (display `("listening on" ,listen)) - (start-web-server "127.0.0.1" listen))) + (start-web-server "127.0.0.1" listen (cli-options->gn-guile-config options)))) |
