diff options
author | Andy Wingo <wingo@pobox.com> | 2011-01-08 10:54:07 -0800 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-01-08 10:54:07 -0800 |
commit | be1be3e597947038a497610eac3053508bf0d7f2 (patch) | |
tree | 0741525d6c05ebc6efd3e74ec3f0df4b9c179296 /module/web/response.scm | |
parent | a574564c24f5d08790f5a429c0f285938363a3f0 (diff) | |
download | guile-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.scm | 12 |
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)))) |