The wookie Reference Manual

This is the wookie Reference Manual, version 0.3.15, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 18:18:03 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 wookie

An evented webserver for Common Lisp.

Author

Andrew Danger Lyon <>

License

MIT

Version

0.3.15

Dependencies
  • alexandria (system).
  • blackbird (system).
  • cl-async (system).
  • cl-async-ssl (system).
  • cl-ppcre (system).
  • babel (system).
  • chunga (system).
  • fast-http (system).
  • quri (system).
  • do-urlencode (system).
  • cl-fad (system).
  • fast-io (system).
  • vom (system).
Source

wookie.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 wookie/wookie.asd

Source

wookie.asd.

Parent Component

wookie (system).

ASDF Systems

wookie.


3.1.2 wookie/config.lisp

Source

wookie.asd.

Parent Component

wookie (system).

Packages

wookie-config.

Public Interface

3.1.3 wookie/util.lisp

Dependency

config.lisp (file).

Source

wookie.asd.

Parent Component

wookie (system).

Packages

wookie-util.

Public Interface
Internals

3.1.4 wookie/package.lisp

Dependency

util.lisp (file).

Source

wookie.asd.

Parent Component

wookie (system).

Packages

wookie.


3.1.5 wookie/state.lisp

Dependency

package.lisp (file).

Source

wookie.asd.

Parent Component

wookie (system).

Public Interface
Internals

3.1.6 wookie/error.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Public Interface
Internals

3.1.7 wookie/route.lisp

Dependency

error.lisp (file).

Source

wookie.asd.

Parent Component

wookie (system).

Public Interface
Internals

3.1.8 wookie/plugin.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Packages

wookie-plugin-export.

Public Interface
Internals

3.1.9 wookie/hook.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Public Interface
Internals

3.1.10 wookie/request-response.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Public Interface
Internals

3.1.11 wookie/parser.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Internals

3.1.12 wookie/listener.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Public Interface
Internals

3.1.13 wookie/listener-ssl.lisp

Dependency

listener.lisp (file).

Source

wookie.asd.

Parent Component

wookie (system).

Public Interface

3.1.14 wookie/helper.lisp

Dependencies
Source

wookie.asd.

Parent Component

wookie (system).

Packages

wookie-helper.

Public Interface
Internals

file-contents (function).


4 Packages

Packages are listed by definition order.


4.1 wookie-util

Source

util.lisp.

Use List
Used By List

wookie.

Public Interface
Internals

4.2 wookie-helper

Source

helper.lisp.

Use List
Public Interface
Internals

file-contents (function).


4.3 wookie-config

Source

config.lisp.

Use List

common-lisp.

Used By List
Public Interface

4.4 wookie-plugin-export

Source

plugin.lisp.

Use List

common-lisp.

Used By List

wookie-helper.


4.5 wookie

Source

package.lisp.

Use List
Used By List

wookie-helper.

Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Special variables

Special Variable: *debug-on-error*

If T, will not catch errors but instead allow them to go to the debugger.

Package

wookie-config.

Source

config.lisp.

Special Variable: *enabled-plugins*

A list of (keyword) names of enabled plugins.

Package

wookie-config.

Source

config.lisp.

Special Variable: *hide-version*

Boolean specifying whether or not to hide the Wookie version in the Server header.

Package

wookie-config.

Source

config.lisp.

Special Variable: *max-body-size*

The max HTTP body size in bytes that Wookie will store for each request, assuming the request is set to store the body (see request-store-body).

Package

wookie-config.

Source

config.lisp.

Special Variable: *plugin-folders*

A list of directories where Wookie plugins can be found.

Package

wookie.

Source

plugin.lisp.

Special Variable: *state*

Holds all global state/context for Wookie.

Package

wookie.

Source

state.lisp.

Special Variable: *tmp-file-store*

Stores the path to where uploads/temporary files go.

Package

wookie-config.

Source

config.lisp.


5.1.2 Macros

Macro: defplugfun (name args &body body)

Define a plugin function that is auto-exported to the :wookie-plugin-export package.

Package

wookie.

Source

plugin.lisp.

Macro: defplugin (&rest asdf-defsystem-args)

Simple wrapper around asdf:defsystem that maps a plugin-name (hopefully in *current-plugin-name*) to the ASDF system the plugin defines.

Package

wookie.

Source

plugin.lisp.

Macro: defroute ((method resource &key regex case-sensitive chunk buffer-body suppress-100 replace vhost priority) (bind-request bind-response &optional bind-args) &body body)

Defines a wookie route and pushes it into the route list.

:regex specifies whether resource is a regex or not
:chunk specifies if the route can handle chunked content
:buffer-body tells Wookie to save any body parts that come through before with-chunking is called
:suppress-100 tells Wookie that we want to send our own ‘100 Continue‘ HTTP response if we get an ‘Expect: 100-continue‘ header in the request :replace tells the routing system to upsert this resource/method set (instead of just blindly adding it to the end of the list like default) :priority specifies a the route priority (a number, defaults to 0). Routes with higher priority values are processed first. Both negative and positive priorities are acceptable.

bind-request/bind-response are the variable names that the request/response values are bound to, and bind-args specifies that variable that regex group matches get sent to (a list).

Package

wookie.

Source

route.lisp.

Macro: get-header (header-collection key)

Get a value from a header collection.

Package

wookie-util.

Source

util.lisp.

Macro: set-header (header-collection key value)

Set a value into a header collection.

Package

wookie-util.

Source

util.lisp.

Macro: with-chunking (request (chunk-data last-chunk-p &key store-body start end) &body body)

Set up a listener for chunked data in a chunk-enabled router. This macro takes a request object, the names of the chunk-data/finishedp arguments for the body, and the body form.

Chunk-data is a byte-array of data received as decoded chunked data comes in from the client, and last-chunk-p is a boolean indicating whether the last chunk from the request is being sent in.

Package

wookie.

Source

request-response.lisp.

Macro: with-vhost (host &body body)

Simple wrapper that makes all defroutes in the body bind to a specific vhost:

(with-vhost "omg.com"
(defroute ...)
(defroute ...))

Package

wookie.

Source

route.lisp.


5.1.3 Ordinary functions

Function: add-hook (hook function &optional hook-name)

Add a hook into the wookie system. Hooks will be run in the order they were added.

Package

wookie.

Source

hook.lisp.

Function: body-to-string (body-bytes content-type-header)

Given a byte vector of HTTP body data and the value of a Content-Type header, convert the body to a string via the charset provided in the header. If a character encoding is not provided, go with the HTTP default, ISO-8859-1.

Package

wookie-util.

Source

util.lisp.

Function: camel-case (keyword)

Camel case anything that can be converted to a string (string, keyword, symbol, etc).

Package

wookie-util.

Source

util.lisp.

Function: clear-hooks (&optional hook)

Clear all hooks (default) or optionally a specific hook type.

Package

wookie.

Source

hook.lisp.

Function: clear-route (method resource-str)

Clear out a route in the routing table.

Package

wookie.

Source

route.lisp.

Function: clear-routes ()

Clear out all routes.

Package

wookie.

Source

route.lisp.

Function: finish-response (response &key close)

Given the stream passed back from start-response, finalize the response (send empty chunk) and close the connection, if specified.

Package

wookie.

Source

request-response.lisp.

Function: getf-reverse (plist key)

Like getf, except the VALUE comes before the KEY:
’(:value1 :key1 :value2 :key2)
Allows reverse lookups in plists without duplicating structures.

Package

wookie-util.

Source

util.lisp.

Function: load-plugins (&key ignore-loading-errors use-quicklisp)

Load all plugins under the *plugin-folder* fold (set with set-plugin-folder). There is also the option to compile the plugins (default nil).

Package

wookie.

Source

plugin.lisp.

Function: lookup-status-text (status-code)

Get the HTTP standard text that goes along with a status code.

Package

wookie-util.

Source

util.lisp.

Function: map-plist (plist fn)

Iterate over a plist

Package

wookie-util.

Source

util.lisp.

Function: next-route ()

Lets the routing system know to re-route the current request, excluding this route from the available options.

Package

wookie.

Source

route.lisp.

Function: plugin-config (plugin-name)

Return the configuration for a plugin. Setfable.

Package

wookie.

Source

plugin.lisp.

Function: (setf plugin-config) (plugin-name)

Allow setting of plugin configuration via setf.

Package

wookie.

Source

plugin.lisp.

Function: plugin-request-data (plugin-name request)

Retrieve the data stored into a request object for the plugin-name (keyword) plugin. This function is setfable.

Package

wookie.

Source

plugin.lisp.

Function: (setf plugin-request-data) (plugin-name request)

When a plugin wants to store data available to the main app, it can do so by storing the data into the request’s plugin data. This function allows this by taking the plugin-name (keyword), request object passed into the route, and the data to store.

Package

wookie.

Source

plugin.lisp.

Function: querystring-to-hash (querystring)

Convert a querystring into a hash table.

Package

wookie-util.

Source

util.lisp.

Function: querystringp (querystring)

Detects if the given string is an HTTP querystring.

Package

wookie-util.

Source

util.lisp.

Function: register-plugin (plugin-name init-function unload-function)

Register a plugin in the Wookie plugin system. Generally this is called from a plugin.lisp file, but can also be called elsewhere in the plugin. The plugin-name argument must be a unique keyword, and init-fn is the initialization function called that loads the plugin (called only once, on register).

Package

wookie.

Source

plugin.lisp.

Function: remove-hook (hook function/hook-name)

Remove a hook from a set of hooks by its function reference OR by the hook’s name given at add-hook.

Package

wookie.

Source

hook.lisp.

Function: send-100-continue (response)

Send a 100 Continue header on the given response object.

Package

wookie.

Source

request-response.lisp.

Function: send-response (response &key status headers body close)

Send a response to an incoming request. Takes :status, :headers, and :body keyword arguments, which together form an entire response.

If :close is T, close the client connection after the response has been sent fully. However, send-response does its best to read the request headers and determine whether or not the connection should be closed. Unless you have a reason to specify :close, it may be best to leave it blank.

Package

wookie.

Source

request-response.lisp.

Function: serve-html5-app (&key bind port index-file)

This is a full-service convenience function for serving up an HTML5 app. This is a lot like start-static-server, but sends all non-existent routes to the load-index function, assuming your index.html file (or whatever you specify in :index-file) is capable of routing on the current URL path. This lets you run HTML apps directly from Wookie with one simple call.

Note that this must be started in the directory of the app itself.

Package

wookie-helper.

Source

helper.lisp.

Function: set-querystring-hash (hash key val)

Set the key of a querystring var into a hash, creating as many nested hashes as needed. For instance:

(set-querystring-hash myhash "data[body][tags]" "dogs,animals,bark")

Would update ‘myhash‘ with
[body] => < hash: [tags] => "dogs,animals,bark" >

Package

wookie-util.

Source

util.lisp.

Function: start-response (response &key status headers)

Start a response to the client, but do not specify body content (or close the connection). Return a chunked (chunga) stream that can be used to send the body content bit by bit until finished by calling finish-response.

Package

wookie.

Source

request-response.lisp.

Function: start-static-server (&key asset-dir bind port)

This is a full-service convenience function that lets you quickly start up a server for serving static content (defaults to the current directory, but you can specify via ‘asset-dir‘).

Package

wookie-helper.

Source

helper.lisp.

Function: unload-plugin (plugin-name)

Unload a plugin from the wookie system. If it’s currently registered, its unload-function will be called.

Also unloads any current plugins that depend on this plugin. Does this recursively so all depencies are always resolved.

Package

wookie.

Source

plugin.lisp.


5.1.4 Generic functions

Generic Function: get-socket (request/response)

Grabs the current socket for the request/response given.

Package

wookie.

Source

request-response.lisp.

Methods
Method: get-socket ((response response))
Method: get-socket ((request request))
Generic Reader: listener-backlog (object)
Package

wookie.

Methods
Reader Method: listener-backlog ((listener listener))

automatically generated reader method

Source

listener.lisp.

Target Slot

backlog.

Generic Writer: (setf listener-backlog) (object)
Package

wookie.

Methods
Writer Method: (setf listener-backlog) ((listener listener))

automatically generated writer method

Source

listener.lisp.

Target Slot

backlog.

Generic Reader: listener-bind (object)
Package

wookie.

Methods
Reader Method: listener-bind ((listener listener))

automatically generated reader method

Source

listener.lisp.

Target Slot

bind.

Generic Writer: (setf listener-bind) (object)
Package

wookie.

Methods
Writer Method: (setf listener-bind) ((listener listener))

automatically generated writer method

Source

listener.lisp.

Target Slot

bind.

Generic Reader: listener-certificate (object)
Package

wookie.

Methods
Reader Method: listener-certificate ((ssl-listener ssl-listener))

automatically generated reader method

Source

listener-ssl.lisp.

Target Slot

certificate.

Generic Writer: (setf listener-certificate) (object)
Package

wookie.

Methods
Writer Method: (setf listener-certificate) ((ssl-listener ssl-listener))

automatically generated writer method

Source

listener-ssl.lisp.

Target Slot

certificate.

Generic Reader: listener-key (object)
Package

wookie.

Methods
Reader Method: listener-key ((ssl-listener ssl-listener))

automatically generated reader method

Source

listener-ssl.lisp.

Target Slot

key.

Generic Writer: (setf listener-key) (object)
Package

wookie.

Methods
Writer Method: (setf listener-key) ((ssl-listener ssl-listener))

automatically generated writer method

Source

listener-ssl.lisp.

Target Slot

key.

Generic Reader: listener-password (object)
Package

wookie.

Methods
Reader Method: listener-password ((ssl-listener ssl-listener))

automatically generated reader method

Source

listener-ssl.lisp.

Target Slot

password.

Generic Writer: (setf listener-password) (object)
Package

wookie.

Methods
Writer Method: (setf listener-password) ((ssl-listener ssl-listener))

automatically generated writer method

Source

listener-ssl.lisp.

Target Slot

password.

Generic Reader: listener-port (object)
Package

wookie.

Methods
Reader Method: listener-port ((listener listener))

automatically generated reader method

Source

listener.lisp.

Target Slot

port.

Generic Writer: (setf listener-port) (object)
Package

wookie.

Methods
Writer Method: (setf listener-port) ((listener listener))

automatically generated writer method

Source

listener.lisp.

Target Slot

port.

Generic Reader: request-body (object)
Package

wookie.

Methods
Reader Method: request-body ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

body.

Generic Writer: (setf request-body) (object)
Package

wookie.

Methods
Writer Method: (setf request-body) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

body.

Generic Reader: request-body-callback (object)
Package

wookie.

Methods
Reader Method: request-body-callback ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

body-callback.

Generic Writer: (setf request-body-callback) (object)
Package

wookie.

Methods
Writer Method: (setf request-body-callback) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

body-callback.

Generic Reader: request-data (object)
Package

wookie.

Methods
Reader Method: request-data ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

data.

Generic Writer: (setf request-data) (object)
Package

wookie.

Methods
Writer Method: (setf request-data) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

data.

Generic Reader: request-headers (object)
Package

wookie.

Methods
Reader Method: request-headers ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

headers.

Generic Writer: (setf request-headers) (object)
Package

wookie.

Methods
Writer Method: (setf request-headers) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

headers.

Generic Reader: request-http (object)
Package

wookie.

Methods
Reader Method: request-http ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

http.

Generic Writer: (setf request-http) (object)
Package

wookie.

Methods
Writer Method: (setf request-http) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

http.

Generic Reader: request-method (object)
Package

wookie.

Methods
Reader Method: request-method ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

method.

Generic Writer: (setf request-method) (object)
Package

wookie.

Methods
Writer Method: (setf request-method) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

method.

Generic Reader: request-plugin-data (object)
Package

wookie.

Methods
Reader Method: request-plugin-data ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

plugin-data.

Generic Writer: (setf request-plugin-data) (object)
Package

wookie.

Methods
Writer Method: (setf request-plugin-data) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

plugin-data.

Generic Reader: request-resource (object)
Package

wookie.

Methods
Reader Method: request-resource ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

resource.

Generic Writer: (setf request-resource) (object)
Package

wookie.

Methods
Writer Method: (setf request-resource) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

resource.

Generic Reader: request-socket (object)
Package

wookie.

Methods
Reader Method: request-socket ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

socket.

Generic Writer: (setf request-socket) (object)
Package

wookie.

Methods
Writer Method: (setf request-socket) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

socket.

Generic Reader: request-store-body (object)
Package

wookie.

Methods
Reader Method: request-store-body ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

store-body.

Generic Writer: (setf request-store-body) (object)
Package

wookie.

Methods
Writer Method: (setf request-store-body) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

store-body.

Generic Reader: request-uri (object)
Package

wookie.

Methods
Reader Method: request-uri ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

uri.

Generic Writer: (setf request-uri) (object)
Package

wookie.

Methods
Writer Method: (setf request-uri) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

uri.

Generic Reader: response-error-response (condition)
Package

wookie.

Methods
Reader Method: response-error-response ((condition response-error))
Source

request-response.lisp.

Target Slot

response.

Generic Reader: response-finished-p (object)
Package

wookie.

Methods
Reader Method: response-finished-p ((response response))

automatically generated reader method

Source

request-response.lisp.

Target Slot

finishedp.

Generic Writer: (setf response-finished-p) (object)
Package

wookie.

Methods
Writer Method: (setf response-finished-p) ((response response))

automatically generated writer method

Source

request-response.lisp.

Target Slot

finishedp.

Generic Reader: response-headers (object)
Package

wookie.

Methods
Reader Method: response-headers ((response response))

automatically generated reader method

Source

request-response.lisp.

Target Slot

headers.

Generic Writer: (setf response-headers) (object)
Package

wookie.

Methods
Writer Method: (setf response-headers) ((response response))

automatically generated writer method

Source

request-response.lisp.

Target Slot

headers.

Generic Reader: response-request (object)
Package

wookie.

Methods
Reader Method: response-request ((response response))

automatically generated reader method

Source

request-response.lisp.

Target Slot

request.

Generic Writer: (setf response-request) (object)
Package

wookie.

Methods
Writer Method: (setf response-request) ((response response))

automatically generated writer method

Source

request-response.lisp.

Target Slot

request.

Generic Function: start-server (listener)

Start Wookie with the given listener.

Package

wookie.

Source

listener.lisp.

Methods
Method: start-server ((listener ssl-listener))
Source

listener-ssl.lisp.

Method: start-server ((listener listener))
Generic Reader: wookie-error-msg (condition)
Package

wookie.

Methods
Reader Method: wookie-error-msg ((condition wookie-error))
Source

error.lisp.

Target Slot

msg.

Generic Reader: wookie-error-socket (condition)
Package

wookie.

Methods
Reader Method: wookie-error-socket ((condition wookie-error))
Source

error.lisp.

Target Slot

socket.

Generic Reader: wookie-state-hooks (object)
Generic Writer: (setf wookie-state-hooks) (object)
Package

wookie.

Methods
Reader Method: wookie-state-hooks ((wookie-state wookie-state))
Writer Method: (setf wookie-state-hooks) ((wookie-state wookie-state))

Holds the hook callbacks associated with this context.

Source

state.lisp.

Target Slot

hooks.

Generic Reader: wookie-state-plugin-config (object)
Generic Writer: (setf wookie-state-plugin-config) (object)
Package

wookie.

Methods
Reader Method: wookie-state-plugin-config ((wookie-state wookie-state))
Writer Method: (setf wookie-state-plugin-config) ((wookie-state wookie-state))

Holds all plugin configuration.

Source

state.lisp.

Target Slot

plugin-config.

Generic Reader: wookie-state-plugins (object)
Generic Writer: (setf wookie-state-plugins) (object)
Package

wookie.

Methods
Reader Method: wookie-state-plugins ((wookie-state wookie-state))
Writer Method: (setf wookie-state-plugins) ((wookie-state wookie-state))

Holds the loaded plugins and their associated data for this context

Source

state.lisp.

Target Slot

plugins.

Generic Reader: wookie-state-routes (object)
Generic Writer: (setf wookie-state-routes) (object)
Package

wookie.

Methods
Reader Method: wookie-state-routes ((wookie-state wookie-state))
Writer Method: (setf wookie-state-routes) ((wookie-state wookie-state))

Holds the routes this context uses.

Source

state.lisp.

Target Slot

routes.


5.1.5 Conditions

Condition: response-already-sent

Triggered when a response is attempted more than once.

Package

wookie.

Source

request-response.lisp.

Direct superclasses

response-error.

Condition: response-error

Describes a response error

Package

wookie.

Source

request-response.lisp.

Direct superclasses

wookie-error.

Direct subclasses

response-already-sent.

Direct methods

response-error-response.

Direct slots
Slot: response
Initform

(quote nil)

Initargs

:response

Readers

response-error-response.

Writers

This slot is read-only.

Condition: route-error

Describes a general routing error.

Package

wookie.

Source

route.lisp.

Direct superclasses

wookie-error.

Direct subclasses

route-not-found.

Direct methods

route-error-resource.

Direct slots
Slot: resource
Initform

(quote nil)

Initargs

:resource

Readers

route-error-resource.

Writers

This slot is read-only.

Condition: route-not-found

Describes a route not found error.

Package

wookie.

Source

route.lisp.

Direct superclasses

route-error.

Condition: wookie-error

Describes a basic error while processing. Meant to be extended.

Package

wookie.

Source

error.lisp.

Direct superclasses

error.

Direct subclasses
Direct methods
Direct slots
Slot: msg
Initform

(quote nil)

Initargs

:msg

Readers

wookie-error-msg.

Writers

This slot is read-only.

Slot: socket
Initform

(quote nil)

Initargs

:socket

Readers

wookie-error-socket.

Writers

This slot is read-only.


5.1.6 Classes

Class: listener

Describes an HTTP listener.

Package

wookie.

Source

listener.lisp.

Direct subclasses

ssl-listener.

Direct methods
Direct slots
Slot: bind
Initargs

:bind

Readers

listener-bind.

Writers

(setf listener-bind).

Slot: port
Initform

80

Initargs

:port

Readers

listener-port.

Writers

(setf listener-port).

Slot: backlog
Initform

-1

Initargs

:backlog

Readers

listener-backlog.

Writers

(setf listener-backlog).

Slot: event-cb
Initargs

:event-cb

Readers

listener-event-cb.

Writers

(setf listener-event-cb).

Class: request

A class describing a request, passed to every route.

Package

wookie.

Source

request-response.lisp.

Direct methods
Direct slots
Slot: socket
Initargs

:socket

Readers

request-socket.

Writers

(setf request-socket).

Slot: method
Package

common-lisp.

Initform

:get

Initargs

:method

Readers

request-method.

Writers

(setf request-method).

Slot: resource
Initform

"/"

Initargs

:resource

Readers

request-resource.

Writers

(setf request-resource).

Slot: headers
Initargs

:headers

Readers

request-headers.

Writers

(setf request-headers).

Slot: uri
Initargs

:url

Readers

request-uri.

Writers

(setf request-uri).

Slot: data
Initargs

:data

Readers

request-data.

Writers

(setf request-data).

Slot: store-body
Initform

t

Initargs

:store-body

Readers

request-store-body.

Writers

(setf request-store-body).

Slot: body
Readers

request-body.

Writers

(setf request-body).

Slot: plugin-data
Initargs

:plugin-data

Readers

request-plugin-data.

Writers

(setf request-plugin-data).

Slot: body-callback
Initargs

:body-callback

Readers

request-body-callback.

Writers

(setf request-body-callback).

Slot: body-callback-setcb
Initargs

:body-callback-setcb

Readers

request-body-callback-setcb.

Writers

(setf request-body-callback-setcb).

Slot: http
Initargs

:http

Readers

request-http.

Writers

(setf request-http).

Class: response

A class holding information about a response to the client.

Package

wookie.

Source

request-response.lisp.

Direct methods
Direct slots
Slot: headers
Initargs

:headers

Readers

response-headers.

Writers

(setf response-headers).

Slot: request
Initargs

:request

Readers

response-request.

Writers

(setf response-request).

Slot: finishedp
Initargs

:finishedp

Readers

response-finished-p.

Writers

(setf response-finished-p).

Slot: chunk-stream
Initargs

:chunk-stream

Readers

response-chunk-stream.

Writers

(setf response-chunk-stream).

Class: ssl-listener

Describes an HTTPS listener.

Package

wookie.

Source

listener-ssl.lisp.

Direct superclasses

listener.

Direct methods
Direct slots
Slot: certificate
Initargs

:certificate

Readers

listener-certificate.

Writers

(setf listener-certificate).

Slot: key
Initargs

:key

Readers

listener-key.

Writers

(setf listener-key).

Slot: password
Initargs

:password

Readers

listener-password.

Writers

(setf listener-password).

Class: wookie-state

wookie-state holds all global data/state used by Wookie. It’s purpose is to make threading Wookie easier by allowing the declaration of one thread-local variable instad of many.

Package

wookie.

Source

state.lisp.

Direct methods
Direct slots
Slot: hooks

Holds the hook callbacks associated with this context.

Initform

(make-hash-table :size 10 :test (function eq))

Initargs

:hooks

Readers

wookie-state-hooks.

Writers

(setf wookie-state-hooks).

Slot: plugins

Holds the loaded plugins and their associated data for this context

Initform

(make-hash-table :test (function eq))

Initargs

:plugins

Readers

wookie-state-plugins.

Writers

(setf wookie-state-plugins).

Slot: plugin-config

Holds all plugin configuration.

Initargs

:plugin-config

Readers

wookie-state-plugin-config.

Writers

(setf wookie-state-plugin-config).

Slot: routes

Holds the routes this context uses.

Initform

(make-array 0 :adjustable t :fill-pointer t)

Initargs

:routes

Readers

wookie-state-routes.

Writers

(setf wookie-state-routes).

Slot: ordered-routes

Routes ordered according to their priority (cached value)

Readers

wookie-state-ordered-routes.

Writers

(setf wookie-state-ordered-routes).


5.2 Internals


5.2.1 Special variables

Special Variable: *available-plugins*

A plist (generated by load-plugins) that holds a mapping of plugin <–> ASDF systems for the plugins. Reset on each load-plugins run.

Package

wookie.

Source

plugin.lisp.

Special Variable: *current-plugin-name*

Used by load-plugins to tie ASDF systems to a :plugin-name

Package

wookie.

Source

plugin.lisp.

Special Variable: *default-vhost*

Defines the default virtualhost that routes use (unless explicitely stated otherwise). Nil means no vhost (respond to all requests).

Package

wookie.

Source

route.lisp.

Special Variable: *scanner-plugin-name*

Basically unix’s basename in a regex.

Package

wookie.

Source

plugin.lisp.

Special Variable: *scanner-querystring-p*

Detects a querystring.

Package

wookie-util.

Source

util.lisp.

Special Variable: *wookie-version*

Holds Wookie’s current version.

Package

wookie.

Source

request-response.lisp.


5.2.2 Macros

Macro: do-run-hooks ((socket) run-hook-cmd &body body)

Run a number of hooks, catch any errors while running said hooks, and if an error occurs, clear out all traces of the current request (specified on the socket). If no errors occur, run the body normally.

Package

wookie.

Source

hook.lisp.


5.2.3 Ordinary functions

Function: add-default-headers (headers)

Add a number of default headers to a headers plist. If one of the default headers is already present, do NOT overwrite it. This allows the app to set its own headers that can override the defaults.

Package

wookie.

Source

request-response.lisp.

Function: add-route (new-route)

Add a new route to the table.

Package

wookie.

Source

route.lisp.

Function: convert-hash-vectors (hash)

Given a hash table, look for all hashes whos keys are a set of indexes starting at zero and convert them to vectors. For instance: {users: {0: ’leonard’, 1: ’freddy’, 2: ’samuel’}}
becomes:
{users: [’leonard’, ’freddy’, ’samuel’]}

This function is recursive.

Package

wookie-util.

Source

util.lisp.

Function: file-contents (path)

Sucks up an entire file from PATH into a freshly-allocated string, returning two values: the string and the number of bytes read.

Package

wookie-helper.

Source

helper.lisp.

Function: find-route (method resource &key exclude host)

Given a method and a resource, find the best matching route.

Package

wookie.

Source

route.lisp.

Function: get-log-uri (uri)

Given a quri object, return a string of the printable version for logging.

Package

wookie.

Source

request-response.lisp.

Function: get-overridden-method (request original-method)

Checks if there is a GET var called _method, and if so, uses it instead of the provided method.

Package

wookie.

Source

parser.lisp.

Function: get-querystring-hash-r (container subkeys val)

Recursively build a tree of hashes based on a given set of subkeys in a query string.

Package

wookie-util.

Source

util.lisp.

Function: getf* (plist key &optional default)

Similar to GETF but compares keys with string-equal.

Package

wookie-util.

Source

util.lisp.

Function: handle-connection (sock)

Handles a new connection. Creates a bunch of closures that are passed into an http-parse parser which decide amongst themselves, during different points in the parsing, when to dispatch to the found router, when to send chunked content to the route, etc.

Package

wookie.

Source

parser.lisp.

Function: listener-event-handler (ev event-cb)

A wrapper around main-event-handler, useful for listeners to tie into.

Package

wookie.

Source

error.lisp.

Function: main-event-handler (event socket &optional event-cb)

Handle socket events/conditions that crop up during processing.

Package

wookie.

Source

error.lisp.

Function: make-route (method resource fn &key regex case-sensitive allow-chunking buffer-body suppress-100 vhost priority)

Simple wrapper to make a route object from a set of args.

Package

wookie.

Source

route.lisp.

Function: match-plugin-asdf (plugin-name asdf-system)

Match a plugin and an ASDF system toeach other.

Package

wookie.

Source

plugin.lisp.

Function: method-equal (method1 method2)

Test two route methods (kewords or lists of keywords) for equality.

Package

wookie.

Source

route.lisp.

Function: ordered-routes ()

Return the array of routes ordered by their priority, routes with higher priority being first.

Package

wookie.

Source

route.lisp.

Function: print-hash (hash-table &optional indent)

Useful for debugging hash tables.

Package

wookie-util.

Source

util.lisp.

Function: read-data (sock data)

A simple read-cb handler that passes data to the HTTP parser attached to the socket the data is coming in on. The parser runs all necessary callbacks directly, so this function just blindly feeds the data in.

Package

wookie.

Source

parser.lisp.

Function: resolve-dependencies (&key ignore-loading-errors use-quicklisp)

Load the ASDF plugins and resolve all of their dependencies. Kind of an unfortunate name. Will probably be renamed.

Package

wookie.

Source

plugin.lisp.

Function: route-equal (route method resource-str)

Test the property values of :method and :resource-str in a route plist for equality against a supplied method and resource-str.

Package

wookie.

Source

route.lisp.

Function: routes-modified ()

Reset ordered route cache after routing changes

Package

wookie.

Source

route.lisp.

Function: run-hooks (hook &rest args)

Run all hooks of a specific type. Returns a future that is finished with no values when all hooks have successfully run. If a hook callback returns a future object, then run-hooks will wait for it to finish before finishing its own future. If multiple callbacks return futures, run-hooks waits for ALL of them to finish before finishing its future.

This setup allows an application to add extra processing to hooks that may be asynchronous without blocking the event loop, and without the processing of the current request stampeding full steam ahead when it may need access to information the hook is grabbing async.

For instance, let’s say you want to check user auth on each request, you could set up a :pre-route hook that reads the request and checks the auth info against your database, finishing the future it returns only when the database has responded. Once the future is finished, then Wookie will continue processing the request.

Package

wookie.

Source

hook.lisp.

Function: setup-parser (sock)

This is the main parser function. It’s responsible for listening to a socket, setting up an HTTP parser for it, handling the different events/callbacks the HTTP parser throws at it, dispatching routes, handling body chunking, etc. A lot of this is done via shared state which all lives under this function’s top-level (let) form, and a set of local functions which read/modify this shared state.

This function is at the core of Wookie’s being.

Note that setup-parser can be called multiple times on the same socket. The only reason to do this is if a request/response has come and gone on the socket and you wish to make the socket available for another request. Wookie handles all of this automatically.

Package

wookie.

Source

parser.lisp.

Function: upsert-route (new-route)

Add a new route to the table. If a route already exists with the same method and resource string, it is replaced with the new one in the same position the old route existed in (as to preserve routing order).

Package

wookie.

Source

route.lisp.


5.2.4 Generic functions

Generic Reader: listener-event-cb (object)
Package

wookie.

Methods
Reader Method: listener-event-cb ((listener listener))

automatically generated reader method

Source

listener.lisp.

Target Slot

event-cb.

Generic Writer: (setf listener-event-cb) (object)
Package

wookie.

Methods
Writer Method: (setf listener-event-cb) ((listener listener))

automatically generated writer method

Source

listener.lisp.

Target Slot

event-cb.

Generic Reader: request-body-callback-setcb (object)
Package

wookie.

Methods
Reader Method: request-body-callback-setcb ((request request))

automatically generated reader method

Source

request-response.lisp.

Target Slot

body-callback-setcb.

Generic Writer: (setf request-body-callback-setcb) (object)
Package

wookie.

Methods
Writer Method: (setf request-body-callback-setcb) ((request request))

automatically generated writer method

Source

request-response.lisp.

Target Slot

body-callback-setcb.

Generic Reader: response-chunk-stream (object)
Package

wookie.

Methods
Reader Method: response-chunk-stream ((response response))

automatically generated reader method

Source

request-response.lisp.

Target Slot

chunk-stream.

Generic Writer: (setf response-chunk-stream) (object)
Package

wookie.

Methods
Writer Method: (setf response-chunk-stream) ((response response))

automatically generated writer method

Source

request-response.lisp.

Target Slot

chunk-stream.

Generic Reader: route-error-resource (condition)
Package

wookie.

Methods
Reader Method: route-error-resource ((condition route-error))
Source

route.lisp.

Target Slot

resource.

Generic Reader: wookie-state-ordered-routes (object)
Generic Writer: (setf wookie-state-ordered-routes) (object)
Package

wookie.

Methods
Reader Method: wookie-state-ordered-routes ((wookie-state wookie-state))
Writer Method: (setf wookie-state-ordered-routes) ((wookie-state wookie-state))

Routes ordered according to their priority (cached value)

Source

state.lisp.

Target Slot

ordered-routes.


5.2.5 Conditions

Condition: use-next-route

Signals to the routing system to load the next route after the one loaded. can be used to set up route load chains based on criteria not sent directly to find-route.

Package

wookie.

Source

route.lisp.

Direct superclasses

condition.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   (  
A   B   C   D   F   G   H   L   M   N   O   P   Q   R   S   U   W  
Index Entry  Section

(
(setf listener-backlog): Public generic functions
(setf listener-backlog): Public generic functions
(setf listener-bind): Public generic functions
(setf listener-bind): Public generic functions
(setf listener-certificate): Public generic functions
(setf listener-certificate): Public generic functions
(setf listener-event-cb): Private generic functions
(setf listener-event-cb): Private generic functions
(setf listener-key): Public generic functions
(setf listener-key): Public generic functions
(setf listener-password): Public generic functions
(setf listener-password): Public generic functions
(setf listener-port): Public generic functions
(setf listener-port): Public generic functions
(setf plugin-config): Public ordinary functions
(setf plugin-request-data): Public ordinary functions
(setf request-body): Public generic functions
(setf request-body): Public generic functions
(setf request-body-callback): Public generic functions
(setf request-body-callback): Public generic functions
(setf request-body-callback-setcb): Private generic functions
(setf request-body-callback-setcb): Private generic functions
(setf request-data): Public generic functions
(setf request-data): Public generic functions
(setf request-headers): Public generic functions
(setf request-headers): Public generic functions
(setf request-http): Public generic functions
(setf request-http): Public generic functions
(setf request-method): Public generic functions
(setf request-method): Public generic functions
(setf request-plugin-data): Public generic functions
(setf request-plugin-data): Public generic functions
(setf request-resource): Public generic functions
(setf request-resource): Public generic functions
(setf request-socket): Public generic functions
(setf request-socket): Public generic functions
(setf request-store-body): Public generic functions
(setf request-store-body): Public generic functions
(setf request-uri): Public generic functions
(setf request-uri): Public generic functions
(setf response-chunk-stream): Private generic functions
(setf response-chunk-stream): Private generic functions
(setf response-finished-p): Public generic functions
(setf response-finished-p): Public generic functions
(setf response-headers): Public generic functions
(setf response-headers): Public generic functions
(setf response-request): Public generic functions
(setf response-request): Public generic functions
(setf wookie-state-hooks): Public generic functions
(setf wookie-state-hooks): Public generic functions
(setf wookie-state-ordered-routes): Private generic functions
(setf wookie-state-ordered-routes): Private generic functions
(setf wookie-state-plugin-config): Public generic functions
(setf wookie-state-plugin-config): Public generic functions
(setf wookie-state-plugins): Public generic functions
(setf wookie-state-plugins): Public generic functions
(setf wookie-state-routes): Public generic functions
(setf wookie-state-routes): Public generic functions

A
add-default-headers: Private ordinary functions
add-hook: Public ordinary functions
add-route: Private ordinary functions

B
body-to-string: Public ordinary functions

C
camel-case: Public ordinary functions
clear-hooks: Public ordinary functions
clear-route: Public ordinary functions
clear-routes: Public ordinary functions
convert-hash-vectors: Private ordinary functions

D
defplugfun: Public macros
defplugin: Public macros
defroute: Public macros
do-run-hooks: Private macros

F
file-contents: Private ordinary functions
find-route: Private ordinary functions
finish-response: Public ordinary functions
Function, (setf plugin-config): Public ordinary functions
Function, (setf plugin-request-data): Public ordinary functions
Function, add-default-headers: Private ordinary functions
Function, add-hook: Public ordinary functions
Function, add-route: Private ordinary functions
Function, body-to-string: Public ordinary functions
Function, camel-case: Public ordinary functions
Function, clear-hooks: Public ordinary functions
Function, clear-route: Public ordinary functions
Function, clear-routes: Public ordinary functions
Function, convert-hash-vectors: Private ordinary functions
Function, file-contents: Private ordinary functions
Function, find-route: Private ordinary functions
Function, finish-response: Public ordinary functions
Function, get-log-uri: Private ordinary functions
Function, get-overridden-method: Private ordinary functions
Function, get-querystring-hash-r: Private ordinary functions
Function, getf*: Private ordinary functions
Function, getf-reverse: Public ordinary functions
Function, handle-connection: Private ordinary functions
Function, listener-event-handler: Private ordinary functions
Function, load-plugins: Public ordinary functions
Function, lookup-status-text: Public ordinary functions
Function, main-event-handler: Private ordinary functions
Function, make-route: Private ordinary functions
Function, map-plist: Public ordinary functions
Function, match-plugin-asdf: Private ordinary functions
Function, method-equal: Private ordinary functions
Function, next-route: Public ordinary functions
Function, ordered-routes: Private ordinary functions
Function, plugin-config: Public ordinary functions
Function, plugin-request-data: Public ordinary functions
Function, print-hash: Private ordinary functions
Function, querystring-to-hash: Public ordinary functions
Function, querystringp: Public ordinary functions
Function, read-data: Private ordinary functions
Function, register-plugin: Public ordinary functions
Function, remove-hook: Public ordinary functions
Function, resolve-dependencies: Private ordinary functions
Function, route-equal: Private ordinary functions
Function, routes-modified: Private ordinary functions
Function, run-hooks: Private ordinary functions
Function, send-100-continue: Public ordinary functions
Function, send-response: Public ordinary functions
Function, serve-html5-app: Public ordinary functions
Function, set-querystring-hash: Public ordinary functions
Function, setup-parser: Private ordinary functions
Function, start-response: Public ordinary functions
Function, start-static-server: Public ordinary functions
Function, unload-plugin: Public ordinary functions
Function, upsert-route: Private ordinary functions

G
Generic Function, (setf listener-backlog): Public generic functions
Generic Function, (setf listener-bind): Public generic functions
Generic Function, (setf listener-certificate): Public generic functions
Generic Function, (setf listener-event-cb): Private generic functions
Generic Function, (setf listener-key): Public generic functions
Generic Function, (setf listener-password): Public generic functions
Generic Function, (setf listener-port): Public generic functions
Generic Function, (setf request-body): Public generic functions
Generic Function, (setf request-body-callback): Public generic functions
Generic Function, (setf request-body-callback-setcb): Private generic functions
Generic Function, (setf request-data): Public generic functions
Generic Function, (setf request-headers): Public generic functions
Generic Function, (setf request-http): Public generic functions
Generic Function, (setf request-method): Public generic functions
Generic Function, (setf request-plugin-data): Public generic functions
Generic Function, (setf request-resource): Public generic functions
Generic Function, (setf request-socket): Public generic functions
Generic Function, (setf request-store-body): Public generic functions
Generic Function, (setf request-uri): Public generic functions
Generic Function, (setf response-chunk-stream): Private generic functions
Generic Function, (setf response-finished-p): Public generic functions
Generic Function, (setf response-headers): Public generic functions
Generic Function, (setf response-request): Public generic functions
Generic Function, (setf wookie-state-hooks): Public generic functions
Generic Function, (setf wookie-state-ordered-routes): Private generic functions
Generic Function, (setf wookie-state-plugin-config): Public generic functions
Generic Function, (setf wookie-state-plugins): Public generic functions
Generic Function, (setf wookie-state-routes): Public generic functions
Generic Function, get-socket: Public generic functions
Generic Function, listener-backlog: Public generic functions
Generic Function, listener-bind: Public generic functions
Generic Function, listener-certificate: Public generic functions
Generic Function, listener-event-cb: Private generic functions
Generic Function, listener-key: Public generic functions
Generic Function, listener-password: Public generic functions
Generic Function, listener-port: Public generic functions
Generic Function, request-body: Public generic functions
Generic Function, request-body-callback: Public generic functions
Generic Function, request-body-callback-setcb: Private generic functions
Generic Function, request-data: Public generic functions
Generic Function, request-headers: Public generic functions
Generic Function, request-http: Public generic functions
Generic Function, request-method: Public generic functions
Generic Function, request-plugin-data: Public generic functions
Generic Function, request-resource: Public generic functions
Generic Function, request-socket: Public generic functions
Generic Function, request-store-body: Public generic functions
Generic Function, request-uri: Public generic functions
Generic Function, response-chunk-stream: Private generic functions
Generic Function, response-error-response: Public generic functions
Generic Function, response-finished-p: Public generic functions
Generic Function, response-headers: Public generic functions
Generic Function, response-request: Public generic functions
Generic Function, route-error-resource: Private generic functions
Generic Function, start-server: Public generic functions
Generic Function, wookie-error-msg: Public generic functions
Generic Function, wookie-error-socket: Public generic functions
Generic Function, wookie-state-hooks: Public generic functions
Generic Function, wookie-state-ordered-routes: Private generic functions
Generic Function, wookie-state-plugin-config: Public generic functions
Generic Function, wookie-state-plugins: Public generic functions
Generic Function, wookie-state-routes: Public generic functions
get-header: Public macros
get-log-uri: Private ordinary functions
get-overridden-method: Private ordinary functions
get-querystring-hash-r: Private ordinary functions
get-socket: Public generic functions
get-socket: Public generic functions
get-socket: Public generic functions
getf*: Private ordinary functions
getf-reverse: Public ordinary functions

H
handle-connection: Private ordinary functions

L
listener-backlog: Public generic functions
listener-backlog: Public generic functions
listener-bind: Public generic functions
listener-bind: Public generic functions
listener-certificate: Public generic functions
listener-certificate: Public generic functions
listener-event-cb: Private generic functions
listener-event-cb: Private generic functions
listener-event-handler: Private ordinary functions
listener-key: Public generic functions
listener-key: Public generic functions
listener-password: Public generic functions
listener-password: Public generic functions
listener-port: Public generic functions
listener-port: Public generic functions
load-plugins: Public ordinary functions
lookup-status-text: Public ordinary functions

M
Macro, defplugfun: Public macros
Macro, defplugin: Public macros
Macro, defroute: Public macros
Macro, do-run-hooks: Private macros
Macro, get-header: Public macros
Macro, set-header: Public macros
Macro, with-chunking: Public macros
Macro, with-vhost: Public macros
main-event-handler: Private ordinary functions
make-route: Private ordinary functions
map-plist: Public ordinary functions
match-plugin-asdf: Private ordinary functions
Method, (setf listener-backlog): Public generic functions
Method, (setf listener-bind): Public generic functions
Method, (setf listener-certificate): Public generic functions
Method, (setf listener-event-cb): Private generic functions
Method, (setf listener-key): Public generic functions
Method, (setf listener-password): Public generic functions
Method, (setf listener-port): Public generic functions
Method, (setf request-body): Public generic functions
Method, (setf request-body-callback): Public generic functions
Method, (setf request-body-callback-setcb): Private generic functions
Method, (setf request-data): Public generic functions
Method, (setf request-headers): Public generic functions
Method, (setf request-http): Public generic functions
Method, (setf request-method): Public generic functions
Method, (setf request-plugin-data): Public generic functions
Method, (setf request-resource): Public generic functions
Method, (setf request-socket): Public generic functions
Method, (setf request-store-body): Public generic functions
Method, (setf request-uri): Public generic functions
Method, (setf response-chunk-stream): Private generic functions
Method, (setf response-finished-p): Public generic functions
Method, (setf response-headers): Public generic functions
Method, (setf response-request): Public generic functions
Method, (setf wookie-state-hooks): Public generic functions
Method, (setf wookie-state-ordered-routes): Private generic functions
Method, (setf wookie-state-plugin-config): Public generic functions
Method, (setf wookie-state-plugins): Public generic functions
Method, (setf wookie-state-routes): Public generic functions
Method, get-socket: Public generic functions
Method, get-socket: Public generic functions
Method, listener-backlog: Public generic functions
Method, listener-bind: Public generic functions
Method, listener-certificate: Public generic functions
Method, listener-event-cb: Private generic functions
Method, listener-key: Public generic functions
Method, listener-password: Public generic functions
Method, listener-port: Public generic functions
Method, request-body: Public generic functions
Method, request-body-callback: Public generic functions
Method, request-body-callback-setcb: Private generic functions
Method, request-data: Public generic functions
Method, request-headers: Public generic functions
Method, request-http: Public generic functions
Method, request-method: Public generic functions
Method, request-plugin-data: Public generic functions
Method, request-resource: Public generic functions
Method, request-socket: Public generic functions
Method, request-store-body: Public generic functions
Method, request-uri: Public generic functions
Method, response-chunk-stream: Private generic functions
Method, response-error-response: Public generic functions
Method, response-finished-p: Public generic functions
Method, response-headers: Public generic functions
Method, response-request: Public generic functions
Method, route-error-resource: Private generic functions
Method, start-server: Public generic functions
Method, start-server: Public generic functions
Method, wookie-error-msg: Public generic functions
Method, wookie-error-socket: Public generic functions
Method, wookie-state-hooks: Public generic functions
Method, wookie-state-ordered-routes: Private generic functions
Method, wookie-state-plugin-config: Public generic functions
Method, wookie-state-plugins: Public generic functions
Method, wookie-state-routes: Public generic functions
method-equal: Private ordinary functions

N
next-route: Public ordinary functions

O
ordered-routes: Private ordinary functions

P
plugin-config: Public ordinary functions
plugin-request-data: Public ordinary functions
print-hash: Private ordinary functions

Q
querystring-to-hash: Public ordinary functions
querystringp: Public ordinary functions

R
read-data: Private ordinary functions
register-plugin: Public ordinary functions
remove-hook: Public ordinary functions
request-body: Public generic functions
request-body: Public generic functions
request-body-callback: Public generic functions
request-body-callback: Public generic functions
request-body-callback-setcb: Private generic functions
request-body-callback-setcb: Private generic functions
request-data: Public generic functions
request-data: Public generic functions
request-headers: Public generic functions
request-headers: Public generic functions
request-http: Public generic functions
request-http: Public generic functions
request-method: Public generic functions
request-method: Public generic functions
request-plugin-data: Public generic functions
request-plugin-data: Public generic functions
request-resource: Public generic functions
request-resource: Public generic functions
request-socket: Public generic functions
request-socket: Public generic functions
request-store-body: Public generic functions
request-store-body: Public generic functions
request-uri: Public generic functions
request-uri: Public generic functions
resolve-dependencies: Private ordinary functions
response-chunk-stream: Private generic functions
response-chunk-stream: Private generic functions
response-error-response: Public generic functions
response-error-response: Public generic functions
response-finished-p: Public generic functions
response-finished-p: Public generic functions
response-headers: Public generic functions
response-headers: Public generic functions
response-request: Public generic functions
response-request: Public generic functions
route-equal: Private ordinary functions
route-error-resource: Private generic functions
route-error-resource: Private generic functions
routes-modified: Private ordinary functions
run-hooks: Private ordinary functions

S
send-100-continue: Public ordinary functions
send-response: Public ordinary functions
serve-html5-app: Public ordinary functions
set-header: Public macros
set-querystring-hash: Public ordinary functions
setup-parser: Private ordinary functions
start-response: Public ordinary functions
start-server: Public generic functions
start-server: Public generic functions
start-server: Public generic functions
start-static-server: Public ordinary functions

U
unload-plugin: Public ordinary functions
upsert-route: Private ordinary functions

W
with-chunking: Public macros
with-vhost: Public macros
wookie-error-msg: Public generic functions
wookie-error-msg: Public generic functions
wookie-error-socket: Public generic functions
wookie-error-socket: Public generic functions
wookie-state-hooks: Public generic functions
wookie-state-hooks: Public generic functions
wookie-state-ordered-routes: Private generic functions
wookie-state-ordered-routes: Private generic functions
wookie-state-plugin-config: Public generic functions
wookie-state-plugin-config: Public generic functions
wookie-state-plugins: Public generic functions
wookie-state-plugins: Public generic functions
wookie-state-routes: Public generic functions
wookie-state-routes: Public generic functions


A.3 Variables

Jump to:   *  
B   C   D   E   F   H   K   M   O   P   R   S   U  
Index Entry  Section

*
*available-plugins*: Private special variables
*current-plugin-name*: Private special variables
*debug-on-error*: Public special variables
*default-vhost*: Private special variables
*enabled-plugins*: Public special variables
*hide-version*: Public special variables
*max-body-size*: Public special variables
*plugin-folders*: Public special variables
*scanner-plugin-name*: Private special variables
*scanner-querystring-p*: Private special variables
*state*: Public special variables
*tmp-file-store*: Public special variables
*wookie-version*: Private special variables

B
backlog: Public classes
bind: Public classes
body: Public classes
body-callback: Public classes
body-callback-setcb: Public classes

C
certificate: Public classes
chunk-stream: Public classes

D
data: Public classes

E
event-cb: Public classes

F
finishedp: Public classes

H
headers: Public classes
headers: Public classes
hooks: Public classes
http: Public classes

K
key: Public classes

M
method: Public classes
msg: Public conditions

O
ordered-routes: Public classes

P
password: Public classes
plugin-config: Public classes
plugin-data: Public classes
plugins: Public classes
port: Public classes

R
request: Public classes
resource: Public conditions
resource: Public classes
response: Public conditions
routes: Public classes

S
Slot, backlog: Public classes
Slot, bind: Public classes
Slot, body: Public classes
Slot, body-callback: Public classes
Slot, body-callback-setcb: Public classes
Slot, certificate: Public classes
Slot, chunk-stream: Public classes
Slot, data: Public classes
Slot, event-cb: Public classes
Slot, finishedp: Public classes
Slot, headers: Public classes
Slot, headers: Public classes
Slot, hooks: Public classes
Slot, http: Public classes
Slot, key: Public classes
Slot, method: Public classes
Slot, msg: Public conditions
Slot, ordered-routes: Public classes
Slot, password: Public classes
Slot, plugin-config: Public classes
Slot, plugin-data: Public classes
Slot, plugins: Public classes
Slot, port: Public classes
Slot, request: Public classes
Slot, resource: Public conditions
Slot, resource: Public classes
Slot, response: Public conditions
Slot, routes: Public classes
Slot, socket: Public conditions
Slot, socket: Public classes
Slot, store-body: Public classes
Slot, uri: Public classes
socket: Public conditions
socket: Public classes
Special Variable, *available-plugins*: Private special variables
Special Variable, *current-plugin-name*: Private special variables
Special Variable, *debug-on-error*: Public special variables
Special Variable, *default-vhost*: Private special variables
Special Variable, *enabled-plugins*: Public special variables
Special Variable, *hide-version*: Public special variables
Special Variable, *max-body-size*: Public special variables
Special Variable, *plugin-folders*: Public special variables
Special Variable, *scanner-plugin-name*: Private special variables
Special Variable, *scanner-querystring-p*: Private special variables
Special Variable, *state*: Public special variables
Special Variable, *tmp-file-store*: Public special variables
Special Variable, *wookie-version*: Private special variables
store-body: Public classes

U
uri: Public classes


A.4 Data types

Jump to:   C   E   F   H   L   P   R   S   U   W  
Index Entry  Section

C
Class, listener: Public classes
Class, request: Public classes
Class, response: Public classes
Class, ssl-listener: Public classes
Class, wookie-state: Public classes
Condition, response-already-sent: Public conditions
Condition, response-error: Public conditions
Condition, route-error: Public conditions
Condition, route-not-found: Public conditions
Condition, use-next-route: Private conditions
Condition, wookie-error: Public conditions
config.lisp: The wookie/config․lisp file

E
error.lisp: The wookie/error․lisp file

F
File, config.lisp: The wookie/config․lisp file
File, error.lisp: The wookie/error․lisp file
File, helper.lisp: The wookie/helper․lisp file
File, hook.lisp: The wookie/hook․lisp file
File, listener-ssl.lisp: The wookie/listener-ssl․lisp file
File, listener.lisp: The wookie/listener․lisp file
File, package.lisp: The wookie/package․lisp file
File, parser.lisp: The wookie/parser․lisp file
File, plugin.lisp: The wookie/plugin․lisp file
File, request-response.lisp: The wookie/request-response․lisp file
File, route.lisp: The wookie/route․lisp file
File, state.lisp: The wookie/state․lisp file
File, util.lisp: The wookie/util․lisp file
File, wookie.asd: The wookie/wookie․asd file

H
helper.lisp: The wookie/helper․lisp file
hook.lisp: The wookie/hook․lisp file

L
listener: Public classes
listener-ssl.lisp: The wookie/listener-ssl․lisp file
listener.lisp: The wookie/listener․lisp file

P
Package, wookie: The wookie package
Package, wookie-config: The wookie-config package
Package, wookie-helper: The wookie-helper package
Package, wookie-plugin-export: The wookie-plugin-export package
Package, wookie-util: The wookie-util package
package.lisp: The wookie/package․lisp file
parser.lisp: The wookie/parser․lisp file
plugin.lisp: The wookie/plugin․lisp file

R
request: Public classes
request-response.lisp: The wookie/request-response․lisp file
response: Public classes
response-already-sent: Public conditions
response-error: Public conditions
route-error: Public conditions
route-not-found: Public conditions
route.lisp: The wookie/route․lisp file

S
ssl-listener: Public classes
state.lisp: The wookie/state․lisp file
System, wookie: The wookie system

U
use-next-route: Private conditions
util.lisp: The wookie/util․lisp file

W
wookie: The wookie system
wookie: The wookie package
wookie-config: The wookie-config package
wookie-error: Public conditions
wookie-helper: The wookie-helper package
wookie-plugin-export: The wookie-plugin-export package
wookie-state: Public classes
wookie-util: The wookie-util package
wookie.asd: The wookie/wookie․asd file