summaryrefslogtreecommitdiff
path: root/module/web/response.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-01-08 10:54:07 -0800
committerAndy Wingo <wingo@pobox.com>2011-01-08 10:54:07 -0800
commitbe1be3e597947038a497610eac3053508bf0d7f2 (patch)
tree0741525d6c05ebc6efd3e74ec3f0df4b9c179296 /module/web/response.scm
parenta574564c24f5d08790f5a429c0f285938363a3f0 (diff)
downloadguile-be1be3e597947038a497610eac3053508bf0d7f2.tar.gz
(web http): header names always represented as symbols
* module/web/http.scm (declare-header!): No need to specify `sym', as it can be derived from `name'. Change to take parser, validator, and writer as positional arguments, and multiple? as a keyword. (parse-header): Change to take the header as a symbol already, and just return the parsed value. All headers are symbols now, including unknown headers. I feel OK doing this given that the symbol GC works now. (lookup-header-decl): Only look up headers by symbol. (read-header): Adapt to parse-header change. (valid-header?, write-header): Adapt to all headers being symbols. (split-header-names, list-of-header-names?, write-header-list): Represent all header names as symbols. (declare-opaque-header!, declare-date-header!) (declare-string-list-header!, declare-header-list-header!) (declare-integer-header!, declare-uri-header!) (declare-quality-list-header!, declare-param-list-header!) (declare-key-value-list-header!, declare-entity-tag-list-header!): Change to be functions instead of syntax, and no need to specify the symbolic name. Update all header declarations accordingly. * module/web/request.scm (validate-headers): * module/web/response.scm (validate-headers): Adapt to all headers being symbols. * test-suite/tests/web-http.test (pass-if-parse, pass-if-any-error) (pass-if-parse-error): Update for parse-header change. ("general headers"): Update header list examples to be all symbols.
Diffstat (limited to 'module/web/response.scm')
-rw-r--r--module/web/response.scm12
1 files changed, 4 insertions, 8 deletions
diff --git a/module/web/response.scm b/module/web/response.scm
index 7acde1ec2..f8a87a256 100644
--- a/module/web/response.scm
+++ b/module/web/response.scm
@@ -1,6 +1,6 @@
;;; HTTP response objects
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010, 2011 Free Software Foundation, Inc.
;; This library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public
@@ -101,13 +101,9 @@
(let ((h (car headers)))
(if (pair? h)
(let ((k (car h)) (v (cdr h)))
- (if (symbol? k)
- (if (not (valid-header? k v))
- (bad-response "Bad value for header ~a: ~s" k v))
- (if (not (and (string? k) (string? v)))
- (bad-response "Unknown header not a pair of strings: ~s"
- h)))
- (validate-headers (cdr headers)))
+ (if (valid-header? k v)
+ (validate-headers (cdr headers))
+ (bad-response "Bad value for header ~a: ~s" k v)))
(bad-response "Header not a pair: ~a" h)))
(if (not (null? headers))
(bad-response "Headers not a list: ~a" headers))))