* tekuti/cache.scm (update-cache): Expand cache size back to 20.
(cached-response-and-body, make-entry): Entries are now procedures
that return the cached pair. They also have some more smarts regarding
etags, last-modified, and conditional requests.
* tekuti/page-helpers.scm (respond): Add etag arg. Set a date.
* tekuti/page.scm: Set etags on a number of pages.
* tekuti/cache.scm: Update with more structure. Use take-max, not
list-head. Only cache cacheable request-response pairs.
* tekuti/index.scm: Add cache as index entry. Also return the index ref
within the index itself, instead of at the head.
* tekuti/web.scm: Don't pass cache around, it's part of the index
now. Adapt to new API.
* tekuti/config.scm (*public-host*, *public-port*)
(*private-host*, *private-port*): Use these instead of *host* and the
recently removed *port*. A web app needs to know its public address,
and the private ports are part of its config.
(*server-impl-args*): Redefine as a thunk to delay the dereferencing
of config parameters like *private-host*.
* tekuti/page-helpers.scm (ensure-public-uri): New helper, uses the new
conf vars to ensure that a value is a URI.
(build-headers): New helper, like the old acons* without consing a
rest list.
(respond): Use the two new helpers.
(atom-header, atom-entry): No need for server-name arg, as we know how
to make a public URI.
* tekuti/page.scm (page-feed-atom): Adapt to no need to guess at the
server-name.
* tekuti/web.scm (main-loop): Allow *server-impl-args* to be a thunk.
* tekuti/util.scm (expanduser): Use the user id to fetch the
username from the /etc/passwd file, so that the username is
not chopped at eight characters.
* wordpress_to_dir.py (all_posts): select only published posts.
(post_categories): get the post category based on the new set
of tables wp_terms, wp_term_relationships and wp_term_taxonomy.
Change to use (web server) instead of our own loop. This also means that
requests are request objects from (web request), and responses are from
(web response).
* tekuti/boot.scm (boot): Run the main loop from (tekuti web).
* tekuti/config.scm (*port*, *backlog*, *public-url-base*)
(*private-url-base*): Remove extraneous config vars.
* tekuti/mod-lisp.scm: Rewrite to be a (web server) server-impl. Not
tested very well.
* tekuti/page-helpers.scm (respond): New procedure, now the primary way
to respond to a request.
(relurl, rellink): Take path components as a list, and encode the
parts when making the resulting URL. All callers changed.
* tekuti/page.scm: Change all handlers to take an additional `body'
argument, to respond using `respond', and to use the new `relurl' /
`rellink' protocol.
* tekuti/request.scm: Eviscerate, leaving only pieces that deal in
request objects from `(web request)'.
* tekuti/web.scm: Update to use (weeb server).
* tekuti/config.scm (*private-url-base*, *public-url-base*): Change to
"/", so that we can serve HTTP directly without having a fetch to
e.g. "/foo.css" cause an error. A silly reason, I know.
(*public-path-base*, *private-path-base*): New vars, containing lists
of path components corresponding to their "url" variants above. We are
switching to this, as future commits will show.
(*server-impl*, *server-impl-args*): New vars, will be used by the new
(web server) main loop.
* tekuti/git.scm (with-output-to-blob, with-input-from-blob): Use
hygienic macros.
* tekuti/match-bind.scm (match-bind): Add a check that the pattern is a
literal string.
* tekuti/util.scm (match-lines): Fix port from defmacro.