about summary refs log tree commit diff
path: root/web/webserver.scm
diff options
context:
space:
mode:
Diffstat (limited to 'web/webserver.scm')
-rw-r--r--web/webserver.scm27
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")