* 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.
* tekuti/boot.scm (*option-grammar*): Remove repl and gds args, replaced
by `listen'.
(parse-options): `listen' causes tekuti to spawn a repl server.
(boot): No more repl option; we always sit down into the event-loop.
* tekuti/base64.scm (bytevector-map-n-to-m): Use multiple values.
(base64-encode): Inline the map-3-to-4 definition, and use multiple
values.
(base64-decode): Likewise, with map-4-to-3.
* tekuti/base64.scm: Port to (rnrs bytevectors). All the real work was
done by Andreas Rottmann.
* tekuti/request.scm (request-authenticated?): Run the decoded user name
and password bytevector through utf8->string.
* tekuti/page-helpers.scm (main-sidebar): Add search box.
(find-posts-matching): New function, does a search using git-grep.
* tekuti/page.scm (page-search): New page for showing search results.
* tekuti/util.scm (match-lines): Capture the match-bind binding.
* tekuti/web.scm (choose-handler): Add the search page.
* tekuti/page-helpers.scm (related-tag-cloud): New function, shows a
tag-relative tag cloud.
* tekuti/page.scm (page-show-tag): Add a cloud of related tags.
* tekuti/tags.scm (compute-related-tags): New proc to show related tags.