diff options
Diffstat (limited to 'web/webserver.scm')
-rw-r--r-- | web/webserver.scm | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/web/webserver.scm b/web/webserver.scm index b0070c3..c242b9d 100644 --- a/web/webserver.scm +++ b/web/webserver.scm @@ -7,6 +7,7 @@ (ice-9 exceptions) (srfi srfi-1) (srfi srfi-11) + (srfi srfi-13) (srfi srfi-19) (srfi srfi-26) (rnrs io ports) @@ -28,6 +29,11 @@ (web view doc) (web view markdown)) +(define (get-extension filename) + (let ((dot-pos (string-rindex filename #\.))) + (if dot-pos + (substring filename dot-pos) ""))) + (define +current-repo-path+ (getenv "CURRENT_REPO_PATH")) @@ -91,7 +97,7 @@ otherwise search for set/group data" ("html" text/html))) (define (file-extension file-name) - (last (string-split file-name #\.))) + (last (string-split file-name #\.))) ;; FIXME: does not handle files with multiple dots (define* (render-static-image file-name #:key (extra-headers '())) @@ -135,6 +141,11 @@ otherwise search for set/group data" (lambda (port) (sxml->html (view-brand path) port)))) +(define (render-string str) + (list '((content-type application/txt)) + (lambda (port) + (put-string port str)))) + (define (render-json json) (list '((content-type application/json)) (lambda (port) @@ -246,14 +257,12 @@ otherwise search for set/group data" (('GET "dataset" "bxd-publish" "list") (render-json (get-bxd-publish))) (('GET "dataset" "bxd-publish" "values" page) - (match (string->list page) - ((dataid ... - #\. - #\j - #\s - #\o - #\n) - (render-json (get-bxd-publish-values (list->string dataid)))))) + (match (get-extension page) + (".json" + (render-json (get-bxd-publish-values (basename page ".json")))) + (".tsv" (render-string "TEST1\nTEST2")) + (".gemma" (write-pheno-file page (get-bxd-publish-values (basename page ".gemma")))) + (else (display "ERROR: unknown file type")))) (('GET "dataset" "bxd-publish" "mapping" "values" (string-append dataid ".json")) (render-json (get-bxd-publish-values dataid #:used-for-mapping? #t))) (('GET "doc" "species.html") |