diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-08-09 22:42:58 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-08-09 22:42:58 -0400 |
commit | 83f73108423b9fd11ebfc1dcf8f5095f8e9ff35d (patch) | |
tree | 1948a7d9896bf54a0ecbc5b8c20197769f532230 | |
parent | 8ebe391d1eff8d174a1fbbcc5b62e486c1fefa34 (diff) |
Create utility module.
* guix-web/server.scm (file-extension, directory?,
request-path-components): Delete them.
* guix-web/util.scm: New module.
-rw-r--r-- | guix-web/server.scm | 11 | ||||
-rw-r--r-- | guix-web/util.scm | 43 |
2 files changed, 45 insertions, 9 deletions
diff --git a/guix-web/server.scm b/guix-web/server.scm index 49c6a07..af9f9dc 100644 --- a/guix-web/server.scm +++ b/guix-web/server.scm @@ -17,6 +17,7 @@ (define-module (guix-web server) #:use-module (ice-9 binary-ports) + #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (web http) #:use-module (web request) @@ -25,22 +26,14 @@ #:use-module (guix-web config) #:use-module (guix-web controller) #:use-module (guix-web render) + #:use-module (guix-web util) #:export (start-guix-web)) -(define (file-extension file-name) - (last (string-split file-name #\.))) - -(define (directory? filename) - (string=? filename (dirname filename))) - (define file-mime-types '(("css" . (text/css)) ("js" . (text/javascript)) ("png" . (image/png)))) -(define (request-path-components request) - (split-and-decode-uri-path (uri-path (request-uri request)))) - (define (serve-static-asset request) (let ((filename (string-join (cons guix-web-asset-dir diff --git a/guix-web/util.scm b/guix-web/util.scm new file mode 100644 index 0000000..f99eed5 --- /dev/null +++ b/guix-web/util.scm @@ -0,0 +1,43 @@ +;;; guix-web - Web interface for GNU Guix +;;; Copyright © 2014 David Thompson <davet@gnu.org> +;;; +;;; This program is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU Affero General Public License +;;; as published by the Free Software Foundation, either version 3 of +;;; the License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; Affero General Public License for more details. +;;; +;;; You should have received a copy of the GNU Affero General Public +;;; License along with this program. If not, see +;;; <http://www.gnu.org/licenses/>. + +(define-module (guix-web util) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (web request) + #:use-module (web uri) + #:export (parse-query-string + request-path-components + file-extension + directory?)) + +(define (parse-query-string query) + "Parse and decode the URI query string QUERY and return an alist." + (let lp ((lst (map uri-decode (string-split query (char-set #\& #\=))))) + (match lst + ((key value . rest) + (cons (cons key value) (lp rest))) + (() '())))) + +(define (request-path-components request) + (split-and-decode-uri-path (uri-path (request-uri request)))) + +(define (file-extension file-name) + (last (string-split file-name #\.))) + +(define (directory? filename) + (string=? filename (dirname filename))) |