(define-module (web gn-uri) #:use-module (ice-9 string-fun) #:export ( get-version ; url-parse-id ; normalize-id ; strip-lang mk-meta mk-data mk-doc mk-html mk-url mk-id mk-gnid mk-predicate prefix url-parse-id normalize-id )) (define (normalize-id str) ;; (string-replace-substring (string-downcase str) " " "_") (string-replace-substring str " " "_") ) (define (url-parse-id uri) (if uri (car (reverse (string-split uri #\057))) "unknown" )) (define get-version "2.0") ; (define (base-url) ; "https://luna.genenetwork.org") ;(define (prefix) ; "Build the API URL including version" ; (string-append (base-url) "/api/v" get-version)) (define (base-url) "http://localhost:8091") (define uri-base-url "http://genenetwork.org") (define (prefix) "Build the API URL including version" (base-url)) (define* (mk-url postfix #:optional (ext "")) "Add the path to the API URL" (string-append (prefix) "/" postfix ext)) (define* (mk-uri postfix) "Add the path to the GN URI" (string-append uri-base-url "/" postfix)) (define (mk-html path) "Create a pointer to HTML documentation" (string-append (base-url) "/" path ".html")) (define (mk-doc path) "Create a pointer to HTML documentation" (mk-html (string-append "doc/" path))) (define (mk-meta path) "Create a meta URL for the API path" (mk-url path ".meta.json")) (define (mk-data path) "Create a JSON URL for the API path" (mk-url path ".json")) (define (mk-term postfix) (mk-html (string-append "term" "/" postfix))) (define (mk-id postfix) "Expand URL to make $api/id/identifier. If postfix is a path it will only apply the last element" (mk-url (string-append "id" "/" (url-parse-id postfix)))) (define (mk-gnid postfix) "Expand URL to make http://genenetwork.org/id/identifier. If postfix is a path it will only apply the last element" (mk-uri (string-append "id" "/" (url-parse-id postfix)))) (define (mk-predicate postfix) (mk-html (string-append "predicate" "/" postfix)))