mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 12:20:26 +02:00
minor tweaks to web documentation
* doc/ref/web.texi: Say `World Wide Web'; the hyphenated form is almost never used (c.f. w3.org). General predicate arguments are named `obj'. Fill in arguments omitted from some procedure definitions (e.g. `request-method'). Minor tweaks, such as using en-dash and missing markup as appropriate. Wrap very long deffn lines. * module/web/*.scm: Expand texinfo markup in doc strings. Synchronize with changes in web.texi.
This commit is contained in:
parent
01b83dbd1a
commit
dc87126115
5 changed files with 61 additions and 55 deletions
|
@ -10,7 +10,7 @@
|
||||||
@cindex HTTP
|
@cindex HTTP
|
||||||
|
|
||||||
It has always been possible to connect computers together and share
|
It has always been possible to connect computers together and share
|
||||||
information between them, but the rise of the World-Wide Web over the
|
information between them, but the rise of the World Wide Web over the
|
||||||
last couple of decades has made it much easier to do so. The result is
|
last couple of decades has made it much easier to do so. The result is
|
||||||
a richly connected network of computation, in which Guile forms a part.
|
a richly connected network of computation, in which Guile forms a part.
|
||||||
|
|
||||||
|
@ -206,9 +206,10 @@ The following procedures can be found in the @code{(web uri)}
|
||||||
module. Load it into your Guile, using a form like the above, to have
|
module. Load it into your Guile, using a form like the above, to have
|
||||||
access to them.
|
access to them.
|
||||||
|
|
||||||
@deffn {Scheme Procedure} build-uri scheme [#:userinfo=@code{#f}] [#:host=@code{#f}] @
|
@deffn {Scheme Procedure} build-uri scheme @
|
||||||
[#:port=@code{#f}] [#:path=@code{""}] [#:query=@code{#f}] @
|
[#:userinfo=@code{#f}] [#:host=@code{#f}] [#:port=@code{#f}] @
|
||||||
[#:fragment=@code{#f}] [#:validate?=@code{#t}]
|
[#:path=@code{""}] [#:query=@code{#f}] [#:fragment=@code{#f}] @
|
||||||
|
[#:validate?=@code{#t}]
|
||||||
Construct a URI object. @var{scheme} should be a symbol, @var{port}
|
Construct a URI object. @var{scheme} should be a symbol, @var{port}
|
||||||
either a positive, exact integer or @code{#f}, and the rest of the
|
either a positive, exact integer or @code{#f}, and the rest of the
|
||||||
fields are either strings or @code{#f}. If @var{validate?} is true,
|
fields are either strings or @code{#f}. If @var{validate?} is true,
|
||||||
|
@ -216,7 +217,7 @@ also run some consistency checks to make sure that the constructed URI
|
||||||
is valid.
|
is valid.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} uri? x
|
@deffn {Scheme Procedure} uri? obj
|
||||||
@deffnx {Scheme Procedure} uri-scheme uri
|
@deffnx {Scheme Procedure} uri-scheme uri
|
||||||
@deffnx {Scheme Procedure} uri-userinfo uri
|
@deffnx {Scheme Procedure} uri-userinfo uri
|
||||||
@deffnx {Scheme Procedure} uri-host uri
|
@deffnx {Scheme Procedure} uri-host uri
|
||||||
|
@ -249,9 +250,9 @@ Percent-decode the given @var{str}, according to @var{encoding}, which
|
||||||
should be the name of a character encoding.
|
should be the name of a character encoding.
|
||||||
|
|
||||||
Note that this function should not generally be applied to a full URI
|
Note that this function should not generally be applied to a full URI
|
||||||
string. For paths, use split-and-decode-uri-path instead. For query
|
string. For paths, use @code{split-and-decode-uri-path} instead. For
|
||||||
strings, split the query on @code{&} and @code{=} boundaries, and decode
|
query strings, split the query on @code{&} and @code{=} boundaries, and
|
||||||
the components separately.
|
decode the components separately.
|
||||||
|
|
||||||
Note also that percent-encoded strings encode @emph{bytes}, not
|
Note also that percent-encoded strings encode @emph{bytes}, not
|
||||||
characters. There is no guarantee that a given byte sequence is a valid
|
characters. There is no guarantee that a given byte sequence is a valid
|
||||||
|
@ -378,7 +379,8 @@ For more on the set of headers that Guile knows about out of the box,
|
||||||
@pxref{HTTP Headers}. To add your own, use the @code{declare-header!}
|
@pxref{HTTP Headers}. To add your own, use the @code{declare-header!}
|
||||||
procedure:
|
procedure:
|
||||||
|
|
||||||
@deffn {Scheme Procedure} declare-header! name parser validator writer [#:multiple?=@code{#f}]
|
@deffn {Scheme Procedure} declare-header! name parser validator writer @
|
||||||
|
[#:multiple?=@code{#f}]
|
||||||
Declare a parser, validator, and writer for a given header.
|
Declare a parser, validator, and writer for a given header.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@ -450,7 +452,7 @@ like @code{GET}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} parse-http-version str [start] [end]
|
@deffn {Scheme Procedure} parse-http-version str [start] [end]
|
||||||
Parse an HTTP version from @var{str}, returning it as a major-minor
|
Parse an HTTP version from @var{str}, returning it as a major--minor
|
||||||
pair. For example, @code{HTTP/1.1} parses as the pair of integers,
|
pair. For example, @code{HTTP/1.1} parses as the pair of integers,
|
||||||
@code{(1 . 1)}.
|
@code{(1 . 1)}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
@ -471,7 +473,7 @@ Write the first line of an HTTP request to @var{port}.
|
||||||
|
|
||||||
@deffn {Scheme Procedure} read-response-line port
|
@deffn {Scheme Procedure} read-response-line port
|
||||||
Read the first line of an HTTP response from @var{port}, returning three
|
Read the first line of an HTTP response from @var{port}, returning three
|
||||||
values: the HTTP version, the response code, and the "reason phrase".
|
values: the HTTP version, the response code, and the ``reason phrase''.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} write-response-line version code reason-phrase port
|
@deffn {Scheme Procedure} write-response-line version code reason-phrase port
|
||||||
|
@ -1130,13 +1132,13 @@ any loss of generality.
|
||||||
|
|
||||||
@subsubsection Request API
|
@subsubsection Request API
|
||||||
|
|
||||||
@deffn {Scheme Procedure} request?
|
@deffn {Scheme Procedure} request? obj
|
||||||
@deffnx {Scheme Procedure} request-method
|
@deffnx {Scheme Procedure} request-method request
|
||||||
@deffnx {Scheme Procedure} request-uri
|
@deffnx {Scheme Procedure} request-uri request
|
||||||
@deffnx {Scheme Procedure} request-version
|
@deffnx {Scheme Procedure} request-version request
|
||||||
@deffnx {Scheme Procedure} request-headers
|
@deffnx {Scheme Procedure} request-headers request
|
||||||
@deffnx {Scheme Procedure} request-meta
|
@deffnx {Scheme Procedure} request-meta request
|
||||||
@deffnx {Scheme Procedure} request-port
|
@deffnx {Scheme Procedure} request-port request
|
||||||
A predicate and field accessors for the request type. The fields are as
|
A predicate and field accessors for the request type. The fields are as
|
||||||
follows:
|
follows:
|
||||||
@table @code
|
@table @code
|
||||||
|
@ -1170,7 +1172,9 @@ request, you may read the body separately, and likewise for writing
|
||||||
requests.
|
requests.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} build-request uri [#:method='GET] [#:version='(1 . 1)] [#:headers='()] [#:port=#f] [#:meta='()] [#:validate-headers?=#t]
|
@deffn {Scheme Procedure} build-request uri [#:method='GET] @
|
||||||
|
[#:version='(1 . 1)] [#:headers='()] [#:port=#f] [#:meta='()] @
|
||||||
|
[#:validate-headers?=#t]
|
||||||
Construct an HTTP request object. If @var{validate-headers?} is true,
|
Construct an HTTP request object. If @var{validate-headers?} is true,
|
||||||
the headers are each run through their respective validators.
|
the headers are each run through their respective validators.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
@ -1253,12 +1257,12 @@ A helper routine to determine the absolute URI of a request, using the
|
||||||
As with requests (@pxref{Requests}), Guile offers a data type for HTTP
|
As with requests (@pxref{Requests}), Guile offers a data type for HTTP
|
||||||
responses. Again, the body is represented separately from the request.
|
responses. Again, the body is represented separately from the request.
|
||||||
|
|
||||||
@deffn {Scheme Procedure} response?
|
@deffn {Scheme Procedure} response? obj
|
||||||
@deffnx {Scheme Procedure} response-version
|
@deffnx {Scheme Procedure} response-version response
|
||||||
@deffnx {Scheme Procedure} response-code
|
@deffnx {Scheme Procedure} response-code response
|
||||||
@deffnx {Scheme Procedure} response-reason-phrase response
|
@deffnx {Scheme Procedure} response-reason-phrase response
|
||||||
@deffnx {Scheme Procedure} response-headers
|
@deffnx {Scheme Procedure} response-headers response
|
||||||
@deffnx {Scheme Procedure} response-port
|
@deffnx {Scheme Procedure} response-port response
|
||||||
A predicate and field accessors for the response type. The fields are as
|
A predicate and field accessors for the response type. The fields are as
|
||||||
follows:
|
follows:
|
||||||
@table @code
|
@table @code
|
||||||
|
@ -1384,6 +1388,10 @@ Return @code{#t} if @var{type}, a symbol as returned by
|
||||||
@code{(web client)} provides a simple, synchronous HTTP client, built on
|
@code{(web client)} provides a simple, synchronous HTTP client, built on
|
||||||
the lower-level HTTP, request, and response modules.
|
the lower-level HTTP, request, and response modules.
|
||||||
|
|
||||||
|
@example
|
||||||
|
(use-modules (web client))
|
||||||
|
@end example
|
||||||
|
|
||||||
@deffn {Scheme Procedure} open-socket-for-uri uri
|
@deffn {Scheme Procedure} open-socket-for-uri uri
|
||||||
Return an open input/output port for a connection to URI.
|
Return an open input/output port for a connection to URI.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
@ -1419,9 +1427,9 @@ If you already have a port open, pass it as @var{port}. Otherwise, a
|
||||||
connection will be opened to the server corresponding to @var{uri}. Any
|
connection will be opened to the server corresponding to @var{uri}. Any
|
||||||
extra headers in the alist @var{headers} will be added to the request.
|
extra headers in the alist @var{headers} will be added to the request.
|
||||||
|
|
||||||
If @var{body} is not #f, a message body will also be sent with the HTTP
|
If @var{body} is not @code{#f}, a message body will also be sent with
|
||||||
request. If @var{body} is a string, it is encoded according to the
|
the HTTP request. If @var{body} is a string, it is encoded according to
|
||||||
content-type in @var{headers}, defaulting to UTF-8. Otherwise
|
the content-type in @var{headers}, defaulting to UTF-8. Otherwise
|
||||||
@var{body} should be a bytevector, or @code{#f} for no body. Although a
|
@var{body} should be a bytevector, or @code{#f} for no body. Although a
|
||||||
message body may be sent with any request, usually only @code{POST} and
|
message body may be sent with any request, usually only @code{POST} and
|
||||||
@code{PUT} requests have bodies.
|
@code{PUT} requests have bodies.
|
||||||
|
@ -1480,8 +1488,8 @@ The life cycle of a server goes as follows:
|
||||||
|
|
||||||
@enumerate
|
@enumerate
|
||||||
@item
|
@item
|
||||||
The @code{open} hook is called, to open the server. @code{open} takes 0 or
|
The @code{open} hook is called, to open the server. @code{open} takes
|
||||||
more arguments, depending on the backend, and returns an opaque
|
zero or more arguments, depending on the backend, and returns an opaque
|
||||||
server socket object, or signals an error.
|
server socket object, or signals an error.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
|
@ -1578,8 +1586,8 @@ in, allowing the user's handler to explicitly manage its state.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} sanitize-response request response body
|
@deffn {Scheme Procedure} sanitize-response request response body
|
||||||
"Sanitize" the given response and body, making them appropriate for the
|
``Sanitize'' the given response and body, making them appropriate for
|
||||||
given request.
|
the given request.
|
||||||
|
|
||||||
As a convenience to web handler authors, @var{response} may be given as
|
As a convenience to web handler authors, @var{response} may be given as
|
||||||
an alist of headers, in which case it is used to construct a default
|
an alist of headers, in which case it is used to construct a default
|
||||||
|
|
|
@ -248,10 +248,10 @@ pass it as PORT. The port will be closed at the end of the
|
||||||
request unless KEEP-ALIVE? is true. Any extra headers in the
|
request unless KEEP-ALIVE? is true. Any extra headers in the
|
||||||
alist HEADERS will be added to the request.
|
alist HEADERS will be added to the request.
|
||||||
|
|
||||||
If BODY is not #f, a message body will also be sent with the HTTP
|
If BODY is not ‘#f’, a message body will also be sent with the HTTP
|
||||||
request. If BODY is a string, it is encoded according to the
|
request. If BODY is a string, it is encoded according to the
|
||||||
content-type in HEADERS, defaulting to UTF-8. Otherwise BODY should be
|
content-type in HEADERS, defaulting to UTF-8. Otherwise BODY should be
|
||||||
a bytevector, or #f for no body. Although it's allowed to send a
|
a bytevector, or ‘#f’ for no body. Although it's allowed to send a
|
||||||
message body along with any request, usually only POST and PUT requests
|
message body along with any request, usually only POST and PUT requests
|
||||||
have bodies. See ‘http-put’ and ‘http-post’ documentation, for more.
|
have bodies. See ‘http-put’ and ‘http-post’ documentation, for more.
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ This function is similar to ‘http-get’, except it uses the \"HEAD\"
|
||||||
method. See ‘http-get’ for full documentation on the various keyword
|
method. See ‘http-get’ for full documentation on the various keyword
|
||||||
arguments that are accepted by this function.
|
arguments that are accepted by this function.
|
||||||
|
|
||||||
Returns two values: the resulting response, and #f. Responses to HEAD
|
Returns two values: the resulting response, and ‘#f’. Responses to HEAD
|
||||||
requests do not have a body. The second value is only returned so that
|
requests do not have a body. The second value is only returned so that
|
||||||
other procedures can treat all of the http-foo verbs identically.")
|
other procedures can treat all of the http-foo verbs identically.")
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ The default writer is ‘display’."
|
||||||
(define *eof* (call-with-input-string "" read))
|
(define *eof* (call-with-input-string "" read))
|
||||||
|
|
||||||
(define (read-header port)
|
(define (read-header port)
|
||||||
"Reads one HTTP header from PORT. Returns two values: the header
|
"Read one HTTP header from PORT. Return two values: the header
|
||||||
name and the parsed Scheme value. May raise an exception if the header
|
name and the parsed Scheme value. May raise an exception if the header
|
||||||
was known but the value was invalid.
|
was known but the value was invalid.
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ as an ordered alist."
|
||||||
|
|
||||||
(define (write-headers headers port)
|
(define (write-headers headers port)
|
||||||
"Write the given header alist to PORT. Doesn't write the final
|
"Write the given header alist to PORT. Doesn't write the final
|
||||||
@samp{\\r\\n}, as the user might want to add another header."
|
‘\\r\\n’, as the user might want to add another header."
|
||||||
(let lp ((headers headers))
|
(let lp ((headers headers))
|
||||||
(if (pair? headers)
|
(if (pair? headers)
|
||||||
(begin
|
(begin
|
||||||
|
@ -971,7 +971,7 @@ as an ordered alist."
|
||||||
(define *known-versions* '())
|
(define *known-versions* '())
|
||||||
|
|
||||||
(define* (parse-http-version str #:optional (start 0) (end (string-length str)))
|
(define* (parse-http-version str #:optional (start 0) (end (string-length str)))
|
||||||
"Parse an HTTP version from STR, returning it as a major-minor
|
"Parse an HTTP version from STR, returning it as a major–minor
|
||||||
pair. For example, ‘HTTP/1.1’ parses as the pair of integers,
|
pair. For example, ‘HTTP/1.1’ parses as the pair of integers,
|
||||||
‘(1 . 1)’."
|
‘(1 . 1)’."
|
||||||
(or (let lp ((known *known-versions*))
|
(or (let lp ((known *known-versions*))
|
||||||
|
|
|
@ -267,10 +267,10 @@ closes PORT, unless KEEP-ALIVE? is true."
|
||||||
(define* (response-body-port r #:key (decode? #t) (keep-alive? #t))
|
(define* (response-body-port r #:key (decode? #t) (keep-alive? #t))
|
||||||
"Return an input port from which the body of R can be read. The
|
"Return an input port from which the body of R can be read. The
|
||||||
encoding of the returned port is set according to R's ‘content-type’
|
encoding of the returned port is set according to R's ‘content-type’
|
||||||
header, when it's textual, except if DECODE? is #f. Return #f when no
|
header, when it's textual, except if DECODE? is ‘#f’. Return #f when
|
||||||
body is available.
|
no body is available.
|
||||||
|
|
||||||
When KEEP-ALIVE? is #f, closing the returned port also closes R's
|
When KEEP-ALIVE? is ‘#f’, closing the returned port also closes R's
|
||||||
response port."
|
response port."
|
||||||
(define port
|
(define port
|
||||||
(cond
|
(cond
|
||||||
|
|
|
@ -53,8 +53,8 @@
|
||||||
(query uri-query)
|
(query uri-query)
|
||||||
(fragment uri-fragment))
|
(fragment uri-fragment))
|
||||||
|
|
||||||
(define (absolute-uri? x)
|
(define (absolute-uri? obj)
|
||||||
(and (uri? x) (uri-scheme x) #t))
|
(and (uri? obj) (uri-scheme obj) #t))
|
||||||
|
|
||||||
(define (uri-error message . args)
|
(define (uri-error message . args)
|
||||||
(throw 'uri-error message args))
|
(throw 'uri-error message args))
|
||||||
|
@ -309,17 +309,16 @@ serialization."
|
||||||
which should be the name of a character encoding.
|
which should be the name of a character encoding.
|
||||||
|
|
||||||
Note that this function should not generally be applied to a full URI
|
Note that this function should not generally be applied to a full URI
|
||||||
string. For paths, use split-and-decode-uri-path instead. For query
|
string. For paths, use ‘split-and-decode-uri-path’ instead. For query
|
||||||
strings, split the query on ‘&’ and ‘=’ boundaries, and decode
|
strings, split the query on ‘&’ and ‘=’ boundaries, and decode
|
||||||
the components separately.
|
the components separately.
|
||||||
|
|
||||||
Note also that percent-encoded strings encode @emph{bytes}, not
|
Note also that percent-encoded strings encode _bytes_, not characters.
|
||||||
characters. There is no guarantee that a given byte sequence is a valid
|
There is no guarantee that a given byte sequence is a valid string
|
||||||
string encoding. Therefore this routine may signal an error if the
|
encoding. Therefore this routine may signal an error if the decoded
|
||||||
decoded bytes are not valid for the given encoding. Pass ‘#f’ for
|
bytes are not valid for the given encoding. Pass ‘#f’ for ENCODING if
|
||||||
ENCODING if you want decoded bytes as a bytevector directly.
|
you want decoded bytes as a bytevector directly. ‘set-port-encoding!’,
|
||||||
@xref{Ports, ‘set-port-encoding!’}, for more information on
|
for more information on character encodings.
|
||||||
character encodings.
|
|
||||||
|
|
||||||
Returns a string of the decoded characters, or a bytevector if
|
Returns a string of the decoded characters, or a bytevector if
|
||||||
ENCODING was ‘#f’."
|
ENCODING was ‘#f’."
|
||||||
|
@ -380,11 +379,10 @@ ENCODING was ‘#f’."
|
||||||
UNESCAPED-CHARS.
|
UNESCAPED-CHARS.
|
||||||
|
|
||||||
The default character set includes alphanumerics from ASCII, as well as
|
The default character set includes alphanumerics from ASCII, as well as
|
||||||
the special characters @samp{-}, @samp{.}, @samp{_}, and @samp{~}. Any
|
the special characters ‘-’, ‘.’, ‘_’, and ‘~’. Any other character will
|
||||||
other character will be percent-encoded, by writing out the character to
|
be percent-encoded, by writing out the character to a bytevector within
|
||||||
a bytevector within the given ENCODING, then encoding each byte as
|
the given ENCODING, then encoding each byte as ‘%HH’, where HH is the
|
||||||
‘%HH’, where HH is the hexadecimal representation of
|
hexadecimal representation of the byte."
|
||||||
the byte."
|
|
||||||
(define (needs-escaped? ch)
|
(define (needs-escaped? ch)
|
||||||
(not (char-set-contains? unescaped-chars ch)))
|
(not (char-set-contains? unescaped-chars ch)))
|
||||||
(if (string-index str needs-escaped?)
|
(if (string-index str needs-escaped?)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue