The cl-webdav Reference Manual

This is the cl-webdav Reference Manual, version 0.2.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 15:52:03 2024 GMT+0.

Table of Contents


1 Systems

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


1.1 cl-webdav

A WebDAV server written in Common Lisp

Version

0.2.1

Dependencies
  • hunchentoot (system).
  • cxml (system).
  • cl-fad (system).
Source

cl-webdav.asd.

Child Components

2 Files

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


2.1 Lisp


2.1.1 cl-webdav/cl-webdav.asd

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

ASDF Systems

cl-webdav.


2.1.2 cl-webdav/packages.lisp

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Packages

cl-webdav.


2.1.3 cl-webdav/specials.lisp

Dependency

packages.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Public Interface
Internals

2.1.4 cl-webdav/util.lisp

Dependency

specials.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Internals

2.1.5 cl-webdav/xml.lisp

Dependency

util.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Public Interface
Internals

2.1.6 cl-webdav/resources.lisp

Dependency

xml.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Public Interface
Internals

2.1.7 cl-webdav/properties.lisp

Dependency

resources.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Internals

2.1.8 cl-webdav/handlers.lisp

Dependency

properties.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Public Interface
Internals

2.1.9 cl-webdav/file-resources.lisp

Dependency

handlers.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Public Interface
Internals

2.1.10 cl-webdav/authorized-file-resources.lisp

Dependency

file-resources.lisp (file).

Source

cl-webdav.asd.

Parent Component

cl-webdav (system).

Public Interface

3 Packages

Packages are listed by definition order.


3.1 cl-webdav

Source

packages.lisp.

Nickname

dav

Use List
  • common-lisp.
  • cxml.
  • hunchentoot.
Public Interface
Internals

4 Definitions

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


4.1 Public Interface


4.1.1 Special variables

Special Variable: *allowed-methods*

The list of methods (as keywords) returned by the ‘Allow’ header in case of OPTIONS requests (and also utilized by the handler for MKCOL). Can be adapted to allow for more methods, but for a WebDAV server at least the methods above should be listed.

Package

cl-webdav.

Source

specials.lisp.

Special Variable: *dav-compliance-classes*

A /sorted/ list of DAV compliance classes reported in the ‘DAV’ header when answering OPTIONS requests. It doesn’t make much sense to have more then class 1 in here as long as there’s no lock support.

Package

cl-webdav.

Source

specials.lisp.

Special Variable: *file-resource-base-path-namestring*

The value of this variable is the return value of the default method for FILE-RESOURCE-BASE-PATH-NAMESTRING. It should be the namestring of the truename of an absolute pathname denoting a directory, specifically it must return a string starting and ending with slashes. (Note: This should work on Windows as well.)

Package

cl-webdav.

Source

specials.lisp.

Special Variable: *file-resource-base-uri*

The value of this variable is the return value of the default method for FILE-RESOURCE-BASE-URI. It should be a string which starts with a slash if it’s not empty and does /not/ end with a slash and is /not/ URL-encoded.

Package

cl-webdav.

Source

specials.lisp.

Special Variable: *resource-class*

Whenever a DAV handler is executed, this variable should be bound to the resource class which is to be used. If you’re using CREATE-DAV-DISPATCHER, this will already be taken care of for you.

Package

cl-webdav.

Source

specials.lisp.


4.1.2 Ordinary functions

Function: dav-node (local-name &rest children)

Shortcut for MAKE-XMLS-NODE. Returns an XMLS node with the local name LOCAL-NAME, the namespace URI "DAV:", and the children CHILDREN.

Package

cl-webdav.

Source

xml.lisp.

Function: local-name (thing)

Returns the local name of the XMLS node or attribute THING.

Package

cl-webdav.

Source

xml.lisp.

Function: namespace-uri (thing)

Returns the namespace URI (which can be NIL) of the XMLS node or attribute THING.

Package

cl-webdav.

Source

xml.lisp.

Function: node-attributes (xmls-node)

Returns the list of attributes of the XMLS node XMLS-NODE.

Package

cl-webdav.

Source

xml.lisp.

Function: (setf node-attributes) (xmls-node)

Sets the list of attributes of the XMLS node XMLS-NODE to ATTRIBUTES.

Package

cl-webdav.

Source

xml.lisp.

Function: node-children (xmls-node)

Returns the list of children of the XMLS node XMLS-NODE.

Package

cl-webdav.

Source

xml.lisp.

Function: (setf node-children) (xmls-node)

Sets the list of children of the XMLS node XMLS-NODE to CHILDREN.

Package

cl-webdav.

Source

xml.lisp.

Function: options-dispatcher (request)

A dispatcher which’ll dispatch to OPTIONS-HANDLER in case of an OPTIONS request and decline otherwise. This is only useful if you want to cater to Microsoft DAV clients which always unconditionally send OPTIONS requests to the "/" root resource. Sigh...

Package

cl-webdav.

Source

handlers.lisp.

Function: options-handler ()

The handler for OPTIONS requests. Output is basically determined by *ALLOWED-METHODS* and *DAV-COMPLIANCE-CLASSES*.

Package

cl-webdav.

Source

handlers.lisp.

Function: parse-dav (octets &optional root-name)

Accepts an array OCTETS of octets representing a DAV XML node and converts it into the corresponding XMLS node. According to the WebDAV RFC, non-DAV elements are skipped unless they appear in positions (like in a "prop" element) where arbitrary elements are allowed. If ROOT-NAME is given, it should be the local name (a string) of a DAV node. In this case, the XML is validated. This function is expected to be called from within a Hunchentoot request and throws to the HANDLER-DONE tag with a return code of +HTTP-BAD-REQUEST+ if a parsing error occurs or if the XML is invalid.

This is kind of the inverse operation to SERIALIZE-XMLS-NODE.

Package

cl-webdav.

Source

xml.lisp.

Function: serialize-xmls-node (xmls-node)

Serializes XMLS-NODE to a vector of octets which is returned.

This is kind of the inverse operation to PARSE-DAV and very similar to CXML-XMLS:MAP-NODE.

Package

cl-webdav.

Source

xml.lisp.

Function: xmls-node-p (thing)

Checks whether THING is an XMLS node. See the docstring of MAKE-XMLS-NODE for a description of the structure of XMLS nodes.

Package

cl-webdav.

Source

xml.lisp.


4.1.3 Generic functions

Generic Function: accept-request-p (resource-class request)

This must be a function which accepts a
Hunchentoot request object REQUEST and returns a generalized boolean denoting whether REQUEST denotes a resource the DAV server wants to handle. Usually, you’ll want to look at the script name of the request or something like that - see the class FILE-RESOURCE for an example.

Note that you specialize this function on the resource /class/ and not on the resource.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: accept-request-p ((resource-class (eql cl-webdav:authorized-file-resource)) request)

We just use the method for FILE-RESOURCE.

Source

authorized-file-resources.lisp.

Method: accept-request-p ((resource-class (eql cl-webdav:file-resource)) request)

A request is accepted if it starts with the base URI.

Source

file-resources.lisp.

Method: accept-request-p ((resource-class standard-class) script-name)
Generic Function: copy-dead-properties (source destination)

This function must copy all dead properties of
the resource SOURCE to the resource DESTINATION. There’s a default method but you should definitely specialize this for production servers.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: copy-dead-properties ((source file-resource) (destination file-resource))
Source

file-resources.lisp.

Method: copy-dead-properties (source destination)
Generic Function: copy-resource (source destination)

This function must "copy" the (contents of
the) resource SOURCE in such a way that the copy can in the future be accessed as DESTINATION. It doesn’t have to deal with dead properties, and it can assume that SOURCE doesn’t have children in case it’s a collection.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: copy-resource ((source file-resource) (destination file-resource))

A file resource is moved by copying its counterpart in the file system (using CL-FAD’s function COPY-FILE). Collections (directories) are "copied" simply by creating a new directory with the same name in the destination location.

Source

file-resources.lisp.

Generic Function: create-collection (resource)

This function must create a collection
resource that in the future can be accessed as RESOURCE.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: create-collection (resource)

A collection is created by creating the corresponding directory in the file system (using the Common Lisp function ENSURE-DIRECTORIES-EXIST.

Source

file-resources.lisp.

Generic Function: create-dav-dispatcher (resource-class &optional ms-workaround-p)

Creates and returns a dispatcher for the class
RESOURCE-CLASS which must be a subclass of RESOURCE. If MS-WORKAROUND-P is true (which is the default), OPTIONS requests are always handled irrespective of the results of ACCEPT-REQUEST-P - this is needed to work around problems with some Microsoft DAV clients.

Package

cl-webdav.

Source

handlers.lisp.

Methods
Method: create-dav-dispatcher :around ((resource-class (eql cl-webdav:authorized-file-resource)) &optional ms-workaround-p)

This :AROUND method wraps the normal DAV dispatcher with one that checks basic HTTP authentication first.

Source

authorized-file-resources.lisp.

Method: create-dav-dispatcher ((resource-class standard-class) &optional ms-workaround-p)
Method: create-dav-dispatcher ((resource-class symbol) &optional ms-workaround-p)
Generic Function: file-resource-base-path-namestring (resource-class)

This generic function is called for subclasses of
FILE-RESOURCE to determine the base pathname that’s currently being used, i.e. the part of the filesystem where the files served by the DAV server are stored. The function must return the namestring of the truename of an absolute pathname denoting a directory, specifically it must return a string starting and ending with slashes. (Note: This should work on Windows as well.) You can specialize this function (either on the class or on the name of the class) if you want.

The default method returns the current value of *FILE-RESOURCE-BASE-PATH-NAMESTRING*.

Package

cl-webdav.

Source

file-resources.lisp.

Methods
Method: file-resource-base-path-namestring ((resource-class (eql cl-webdav:authorized-file-resource)))

We compute the base path by attaching the downcased user name to the base path returned for plain file resources. We also create the directory if necessary.

Source

authorized-file-resources.lisp.

Method: file-resource-base-path-namestring ((resource-class standard-class))
Method: file-resource-base-path-namestring ((resource-class symbol))
Generic Function: file-resource-base-uri (resource-class)

This generic function is called for subclasses of
FILE-RESOURCE to determine the base URI that’s currently being used, i.e. the prefix the script name of a resource’s URI must have in order to be valid. (In other words: this URI represents the top-level collection of the DAV server.) The function must return a string which starts with a slash and does /not/ end with a slash and is correctly URL-encoded. You can specialize this function (either on the class or on the name of the class) if you want.

The default method returns the current value of *FILE-RESOURCE-BASE-URI*.

Package

cl-webdav.

Source

file-resources.lisp.

Methods
Method: file-resource-base-uri ((resource-class standard-class))
Method: file-resource-base-uri ((resource-class symbol))
Generic Function: get-content (resource stream length)

This function is called for PUT requests and
must read LENGTH octets of data from the (flexi) stream STREAM and store them in a place appropriate for the resource RESOURCE.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: get-content ((resource file-resource) stream length)

To implement this method, we simply open the corresponding file for writing and read its contents (as chunks of octets) from the stream.

Source

file-resources.lisp.

Generic Function: get-dead-properties (resource)

This function must return all dead properties
of the resource RESOURCE as a list of XML elements structured as XMLS nodes. There’s a default method but you should definitely specialize this for production servers.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: get-dead-properties ((resource file-resource))
Source

file-resources.lisp.

Method: get-dead-properties (resource)
Generic Function: move-dead-properties (source destination)

This function must move all dead properties of
the resource SOURCE to the resource DESTINATION. There’s a default method but you should definitely specialize this for production servers.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: move-dead-properties ((source file-resource) (destination file-resource))
Source

file-resources.lisp.

Method: move-dead-properties (source destination)
Generic Function: move-resource (source destination)

This function must "move" the (contents of
the) resource SOURCE in such a way that it can in the future be accessed as DESTINATION. It doesn’t have to deal with dead properties, and it can assume that SOURCE doesn’t have children in case it’s a collection.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: move-resource ((source file-resource) (destination file-resource))

A file resource is moved by moving its counterpart in the file system (using the Common Lisp function RENAME-FILE).

Source

file-resources.lisp.

Generic Function: remove-dead-properties (resource)

This function must remove all dead properties
of the resource RESOURCE. There’s a default method but you should definitely specialize this for production servers.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: remove-dead-properties ((resource file-resource))
Source

file-resources.lisp.

Method: remove-dead-properties (resource)
Generic Function: remove-dead-property (resource property)

This function must remove the currently stored
dead property designated by PROPERTY (an XMLS node) of the resource RESOURCE. There’s a default method but you should definitely specialize this for production servers.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: remove-dead-property ((resource file-resource) property)
Source

file-resources.lisp.

Method: remove-dead-property (resource property)
Generic Function: remove-resource (resource)

This function must completely remove the
resource RESOURCE. It doesn’t have to deal with dead properties, and it can assume that RESOURCE doesn’t have children in case it’s a collection.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: remove-resource ((resource file-resource))

A file resource is removed by removing the corresponding file in the file system.

Source

file-resources.lisp.

Generic Function: resource-children (resource)

This function must return a list of all
children of RESOURCE (which themselves are RESOURCE objects). You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-children ((resource file-resource))

The children of a (collection) file resource are the contents of the corresponding directory in the file system.

Source

file-resources.lisp.

Generic Function: resource-collection-p (resource)

This function must return a true value if the
resource RESOURCE is a collection. You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-collection-p ((resource file-resource))

A file resource is a collection iff the corresponding file is a directory.

Source

file-resources.lisp.

Generic Function: resource-content-language (resource)

This function should return either NIL or a
language tag as defined in section 14.13 of RFC 2068. If the value returned by this function is not NIL, it will also be used as the ‘Content-Language’ header returned for GET requests. There’s a default method which always returns NIL.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-content-language (resource)
Generic Function: resource-content-type (resource)

This function must return a string denoting
the MIME type of the resource RESOURCE. It will only be called if RESOURCE is /not/ a collection. There’s a default method which always returns "application/octet-stream", but most likely you’ll want to specialize this for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-content-type ((resource file-resource))

We use Hunchentoot’s MIME-TYPE function to determine the resource’s content type based on the type component of its pathname.

Source

file-resources.lisp.

Method: resource-content-type (resource)
Generic Function: resource-creation-date (resource)

This function must return a universal time
denoting the time the resource RESOURCE was created. There’s a default method which returns RESOURCE-WRITE-DATE, but most likely you’ll want to specialize this for you own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-creation-date (resource)
Generic Function: resource-display-name (resource)

This function must return a string which,
according to the WebDAV RFC, "provides a name for the resource that is suitable for presentation to a user." You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-display-name ((resource file-resource))

The display name is basically the real path with the base path stripped off. But we also make sure to convert Windows backslashes to Unix slashes.

Source

file-resources.lisp.

Generic Function: resource-etag (resource)

This function should return an ETag for the
resource RESOURCE or NIL. If the value returned by this function is not NIL, it will also be used as the ‘ETag’ header returned for GET requests. There’s a default method which synthesizes a value based on the script name and the write date of the resource, and in most cases you probably don’t need to specialize this function.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-etag (resource)
Generic Function: resource-exists (resource)

This function must return a true value if the
resource RESOURCE exists on the server and NIL otherwise. You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-exists ((resource file-resource))

A file resource exists iff the corresponding file exists.

Source

file-resources.lisp.

Generic Function: resource-length (resource)

This function must return an integer denoting
the length of the resource RESOURCE in octets. You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-length ((resource file-resource))

The length of a file resource is the length of the corresponding file in octets.

Source

file-resources.lisp.

Generic Function: resource-parent (resource)

This function must return a RESOURCE object
which is the parent resource of RESOURCE or NIL if there is no parent. You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-parent ((resource file-resource))

To determine the parent of a file resource we "walk up" the script name and map the result to a pathname in the file system.

Source

file-resources.lisp.

Generic Reader: resource-script-name (object)
Generic Writer: (setf resource-script-name) (object)
Package

cl-webdav.

Methods
Reader Method: resource-script-name ((resource resource))
Writer Method: (setf resource-script-name) ((resource resource))

This slot holds the script name
(see HUNCHENTOOT:SCRIPT-NAME) that was used to create the resource. For objects you create yourself, you must provide a meaningful value that can be used to access the resource.

Source

resources.lisp.

Target Slot

script-name.

Generic Function: resource-source (resource)

This function should return either NIL or a
DAV "source" XML node (structured as an XMLS node) that, according to the WebDAV RFC, "identifies the resource that contains the unprocessed source of the link’s source." There’s a default method which always returns NIL.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-source (resource)
Generic Function: resource-type (resource)

This function should return either NIL or a
DAV "resourcetype" XML node (structured as an XMLS node) that, according to the WebDAV RFC, "specifies the nature of the resource." There’s a default method which returns something fitting for collections and NIL otherwise, and in most cases you probably don’t need to specialize this function.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-type (resource)
Generic Function: resource-uri-prefix (resource)

This function must return a string which is
the part of a resource’s HTTP or HTTPS URI that comprises the scheme, the host, and the port and ends with a slash - something like "http://localhost:4242/" or "https://www.lisp.org/".

The default method synthesizes this from the information Hunchentoot provides and usually you only have to write your own method if you’re sitting behind a proxy.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-uri-prefix (resource)
Generic Function: resource-write-date (resource)

This function must return a universal time
denoting the time the resource RESOURCE was last modified. You must specialize this generic function for your own classes.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: resource-write-date ((resource file-resource))

As the write date of a resource we return the write date of the corresponding file (or the current time in case we can’t determine the file’s write date).

Source

file-resources.lisp.

Generic Function: send-content (resource stream)

This function is called for GET requests and
must send the complete contents of the (non-collection) resource RESOURCE to the (flexi) stream STREAM.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: send-content ((resource file-resource) stream)

To implement this method, we simply open the corresponding file for reading and send its contents (as chunks of octets) to the stream.

Source

file-resources.lisp.

Generic Function: set-dead-property (resource property)

This function must replace the currently
stored dead property designated by PROPERTY (an XMLS node) of the resource RESOURCE with PROPERTY, i.e. PROPERTY doubles as the property itself and as the property designator. There’s a default method but you should definitely specialize this for production servers.

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: set-dead-property ((resource file-resource) property)
Source

file-resources.lisp.

Method: set-dead-property (resource property)

4.1.4 Standalone methods

Method: characters ((handler xmls-builder) data)

The method to be called when the SAX parser encounters character content.

Package

sax.

Source

xml.lisp.

Method: end-document ((handler xmls-builder))

The last method to be called when parsing an XML document - returns the root of the document.

Package

sax.

Source

xml.lisp.

Method: end-element ((handler xmls-builder) namespace-uri local-name qname)

The method to be called when the SAX parser encounters the end of an element.

Package

sax.

Source

xml.lisp.

Method: initialize-instance :after ((resource file-resource) &rest initargs)

When a file resource is created, either the real path or the script name is known. This :AFTER method sets the other slot.

Source

file-resources.lisp.

Method: start-element ((handler xmls-builder) namespace-uri local-name qname attributes)

The method to be called when the SAX parser encounters the start of an element.

Package

sax.

Source

xml.lisp.


4.1.5 Classes

Class: authorized-file-resource

A subclass of FILE-RESOURCE representing file resources which are associated with a certain user.

Package

cl-webdav.

Source

authorized-file-resources.lisp.

Direct superclasses

file-resource.

Class: file-resource

A subclass of RESOURCE representing resources
which are mapped to a subtree of the local file system.

Package

cl-webdav.

Source

file-resources.lisp.

Direct superclasses

resource.

Direct subclasses

authorized-file-resource.

Direct methods
Direct slots
Slot: real-path

The pathname of the resource within the local file system.

Initargs

:real-path

Readers

real-path.

Writers

(setf real-path).

Class: resource

This is the base class you’ll have to subclass
if you want to create your own custom DAV server. Each object of this class represents one resource on the server and most of the time these objects are created by the server using only
the :SCRIPT-NAME initarg. If you need more initialization to happen, write an :AFTER method for INITIALIZE-INSTANCE.

See the file ‘file-resources.lisp’ for an example of a subclass of RESOURCE.

Package

cl-webdav.

Source

resources.lisp.

Direct subclasses

file-resource.

Direct methods
Direct slots
Slot: script-name

This slot holds the script name
(see HUNCHENTOOT:SCRIPT-NAME) that was used to create the resource. For objects you create yourself, you must provide a meaningful value that can be used to access the resource.

Package

hunchentoot.

Initargs

:script-name

Readers

resource-script-name.

Writers

(setf resource-script-name).


4.2 Internals


4.2.1 Constants

Constant: +buffer-length+

Length of buffers used for internal purposes.

Package

cl-webdav.

Source

specials.lisp.

Constant: +dav-property-alist+

An alist mapping the (names of the) standard DAV properties to functions handling them.

Package

cl-webdav.

Source

specials.lisp.

Constant: +dav-property-designators+

A list of XMLS nodes which are property designators for all DAV (live) properties defined by the WebDAV RFC. Computed at load time from +DAV-PROPERTY-ALIST+.

Package

cl-webdav.

Source

properties.lisp.

Constant: +latin-1+

A FLEXI-STREAMS external format for ISO-8859-1.

Package

cl-webdav.

Source

specials.lisp.

Constant: +utf-8+

A FLEXI-STREAMS external format for UTF-8.

Package

cl-webdav.

Source

specials.lisp.

Constant: +webdav-dtd+

This is used to validate incoming XML. Obviously, this is not a "real" DTD, but the idea should be clear.

Package

cl-webdav.

Source

specials.lisp.


4.2.2 Special variables

Special Variable: *property-hash*

The hash table that by default is used to store dead properties in RAM.

Package

cl-webdav.

Source

specials.lisp.


4.2.3 Macros

Macro: defconstant (name value &optional doc)

Make sure VALUE is evaluated only once (to appease SBCL).

Package

cl-webdav.

Source

specials.lisp.

Macro: define-return-code-shortcut (name return-code)

Defines a function called NAME which just sets the HTTP return code to RETURN-CODE and then ends the current handler by calling ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.


4.2.4 Ordinary functions

Function: all-dead-property-designators (resource)

Returns a list of XMLS nodes which are designators for all dead properties for the resource RESOURCE.

Package

cl-webdav.

Source

properties.lisp.

Function: all-property-designators (resource)

Returns a list of XMLS nodes which are designators for all (dead and live) properties for the resource RESOURCE.

Package

cl-webdav.

Source

properties.lisp.

Function: bad-gateway ()

Sets RETURN-CODE to +HTTP-BAD-GATEWAY+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: collect-properties (resource property-designators show-content)

Tries to collect all properties of the resource RESOURCE which are in the list PROPERTY-DESIGNATORS (which can also be the symbol T which means "all dead an live properties". SHOW-CONTENT is interpreted as in PROPSTAT. Returns the corresponding "response" DAV node as an XMLS node.

Package

cl-webdav.

Source

properties.lisp.

Function: compute-real-path (script-name)

Computes the "real path" of a file resource from the request’s script name.

Package

cl-webdav.

Source

file-resources.lisp.

Function: conflict ()

Sets RETURN-CODE to +HTTP-CONFLICT+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: constantly-nil (&rest args)

Does the same as the result of (CONSTANTLY NIL).

Package

cl-webdav.

Source

specials.lisp.

Function: copy-handler (&optional movep)

The handler for COPY requests which internally uses COPY-OR-MOVE-RESOURCE* to do the actual work. Also doubles as a handler for MOVE requests if MOVEP is true.

Package

cl-webdav.

Source

handlers.lisp.

Function: copy-or-move-resource* (source destination movep depth)

Copies or moves (depending on the generalized boolean MOVEP) the resource denoted by SOURCE to (the resource denoted by) DESTINATION. If DEPTH is NIL, recurses down to the children (if any) as well. Returns a list of conses where the car is an HTTP return code and the cdr is the corresponding (source) resource for exceptional situations encountered during the process.

Package

cl-webdav.

Source

resources.lisp.

Function: copy-properties (from-key to-key)

Copies (using COPY-TREE) properties stored under the (EQUAL) key FROM-KEY (if any) to the key TO-KEY.

Package

cl-webdav.

Source

properties.lisp.

Function: creation-date (resource)

This is the function that is called for the "creationdate" property. It returns the result of RESOURCE-CREATION-DATE as an ISO 8601 string within a DAV XML node.

Package

cl-webdav.

Source

resources.lisp.

Function: dav-dispatcher (request &optional resource-class)

A generic Hunchentoot dispatcher (corresponding to the resource class RESOURCE-CLASS) for all DAV methods. The handler which is returned will have *RESOURCE-CLASS* bound to RESOURCE-CLASS. In theory, you could use this as your dispatcher (which doesn’t call ACCEPT-REQUEST-P first), but it’s not exported and only used internally by CREATE-DAV-DISPATCHER.

Package

cl-webdav.

Source

handlers.lisp.

Function: dav-property-function (property)

Returns the function which is responsible to retrieve the DAV "live" property PROPERTY, where PROPERTY can either be an XMLS node or a string denoting the local name of the corresponding node. If PROPERTY doesn’t denote a DAV property, this function returns NIL.

Package

cl-webdav.

Source

properties.lisp.

Function: delete-handler ()

The handler for DELETE requests. Uses REMOVE-RESOURCE* to do the actual work.

Package

cl-webdav.

Source

handlers.lisp.

Function: failed-dependency ()

Sets RETURN-CODE to +HTTP-FAILED-DEPENDENCY+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: forbidden ()

Sets RETURN-CODE to +HTTP-FORBIDDEN+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: get-content-length (resource)

This is the function that is called for the "getcontentlength" property. It simply returns the result of RESOURCE-LENGTH as a string.

Package

cl-webdav.

Source

resources.lisp.

Function: get-content-type (resource)

This is the function that is called for the "getcontenttype" property. It simply returns the result of RESOURCE-CONTENT-TYPE for non-collections and "httpd/unix-directory" for collections.

Package

cl-webdav.

Source

resources.lisp.

Function: get-dead-property (resource property-designator)

Returns the dead property denoted by the XMLS node PROPERTY-DESIGNATOR of the resource RESOURCE or +HTTP-NOT-FOUND+ if such a property doesn’t exist.

Package

cl-webdav.

Source

properties.lisp.

Function: get-handler (&optional head-request-p)

The handler for GET requests. Serves the contents of the resource using SEND-CONTENT and sets up the HTTP headers correctly. Also doubles as handler for HEAD requests if HEAD-REQUEST-P is true.

Package

cl-webdav.

Source

handlers.lisp.

Function: get-last-modified (resource)

This is the function that is called for the "getlastmodified" property. It returns the result of RESOURCE-WRITE-DATE as an RFC 1123 string within a DAV XML node.

Package

cl-webdav.

Source

resources.lisp.

Function: get-property (resource property-designator)

Returns the (live or dead) property denoted by the XMLS node PROPERTY-DESIGNATOR of the resource RESOURCE or +HTTP-NOT-FOUND+ if such a property doesn’t exist.

Package

cl-webdav.

Source

properties.lisp.

Function: get-resource (&optional script-name)

Creates and returns an object of the type stored in *RESOURCE-CLASS* corresponding to the script name SCRIPT-NAME.

Package

cl-webdav.

Source

resources.lisp.

Function: head-handler ()

The handler for HEAD requests - the actual work is done by GET-HANDLER.

Package

cl-webdav.

Source

handlers.lisp.

Function: ignore-non-dav-elements (node)

Helper function which recursively walks the XMLS node NODE and returns an equivalent node with all non-DAV elements removed (except for those in :ANY positions).

Package

cl-webdav.

Source

xml.lisp.

Function: iso-8601-date (universal-time)

Returns a string representing the universal time UNIVERSAL-TIME as an ISO-8601-formatted date.

Package

cl-webdav.

Source

util.lisp.

Function: make-xmls-builder ()

Creates and returns an instance of the XMLS-BUILDER class.

Package

cl-webdav.

Source

xml.lisp.

Function: make-xmls-node (&key local-name namespace-uri attributes children)

Creates and returns an XMLS node with the local name LOCAL-NAME, the namespace URI NAMESPACE-URI, the attributes ATTRIBUTES (a list of attributes) and the children CHILDREN (also a list). An XMLS node is a list with two or more elements where the first element is the name, the second element is the list of attributes, and all the following elements (if any) are the children. The name is either a string (if there is no namespace), or a cons where the car is the local name and the cdr is the namespace URI.

An attribute is a list of two elements where the first element is the name and the second element is the value. Attribute names are structured like XMLS node names.

Package

cl-webdav.

Source

xml.lisp.

Function: md5-hex (string)

Calculates the md5 sum of the string STRING and returns it as a hex string.

Package

cl-webdav.

Source

util.lisp.

Function: method-not-allowed ()

Sets RETURN-CODE to +HTTP-METHOD-NOT-ALLOWED+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: mkcol-handler ()

The handler for MKCOL requests which uses CREATE-COLLECTION internally.

Package

cl-webdav.

Source

handlers.lisp.

Function: move-handler ()

The handler for MOVE requests. Calls COPY-HANDLER to do the actual work.

Package

cl-webdav.

Source

handlers.lisp.

Function: move-properties (from-key to-key)

Moves properties stored under the (EQUAL) key FROM-KEY (if any) to the key TO-KEY.

Package

cl-webdav.

Source

properties.lisp.

Function: multi-status (results &optional default-return-code)

Utility function which returns a MULTISTATUS response to the HTTP client which is based on RESULTS. RESULTS must be a list of conses where the cdr is the resource and the car is the corresponding status code. If RESULTS is NIL, not MUTILSTATUS response will be generated and DEFAULT-RETURN-CODE will be used instead.

Package

cl-webdav.

Source

handlers.lisp.

Function: not-found ()

Sets RETURN-CODE to +HTTP-NOT-FOUND+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: not-implemented ()

Sets RETURN-CODE to +HTTP-NOT-IMPLEMENTED+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: parse-propfind (octets)

Helper function for PROPFIND-HANDLER which parses the XML stored in OCTETS (an array of octets) which is supposed to be either empty or the body of a PROPFIND request. Returns as its first value a list of the requested properties (as XMLS nodes) or T (denoting all properties) and as its second value a boolean which is T iff the client wants only property names.

Package

cl-webdav.

Source

properties.lisp.

Function: precondition-failed ()

Sets RETURN-CODE to +HTTP-PRECONDITION-FAILED+ and then calls ABORT-REQUEST-HANDLER.

Package

cl-webdav.

Source

util.lisp.

Function: property-equal (property1 property2)

Two (XMLS nodes denoting) properties are equal iff they have the same local name and the same namespace URI.

Package

cl-webdav.

Source

properties.lisp.

Function: propfind-handler ()

The handler for PROPFIND requests. Parses the request’s content body (if there is one) and returns a corresponding "multistatus" XML element using the methods for live and dead properties.

Package

cl-webdav.

Source

handlers.lisp.

Function: proppatch-handler ()

The handler for PROPPATCH requests. Parses the request’s content body, modifies the dead properties as specified and returns a corresponding "multistatus" XML element.

Package

cl-webdav.

Source

handlers.lisp.

Function: propstat (resource property-designator show-content)

Uses GET-PROPERTY to try to retrieve the property designated by PROPERTY-DESIGNATOR from the resource RESOURCE. Returns as its first value an HTTP return code (with +HTTP-OK+ denoting that the property was found) and as its second value the property designator or (if SHOW-CONTENT is true and the property was found) the property itself.

Package

cl-webdav.

Source

properties.lisp.

Function: put-handler ()

The handler for PUT requests. Uses GET-CONTENT to create a new resource from the contents sent by the client.

Package

cl-webdav.

Source

handlers.lisp.

Function: remove-content (xmls-node)

Returns an XMLS node which has the same name and attributes as the XMLS node XMLS-NODE but an empty body.

Package

cl-webdav.

Source

xml.lisp.

Function: remove-properties (key)

Removes any properties stored under the (EQUAL) key KEY.

Package

cl-webdav.

Source

properties.lisp.

Function: remove-resource* (resource)

Removes the resource RESOURCE and (if necessary) its children using REMOVE-RESOURCE. Returns a list of conses where the car is an HTTP return code and the cdr is the corresponding resource for exceptional situations encountered during the process.

Package

cl-webdav.

Source

resources.lisp.

Function: resource-created (resource)

Utility function which sets up Hunchentoot’s *REPLY* object for a +HTTP-CREATED+ response corresponding to the newly-created resource RESOURCE.

Package

cl-webdav.

Source

resources.lisp.

Function: resource-href (resource)

Returns a URL-encoded version of the resource’s script name for use in HREF elements in property XML.

Package

cl-webdav.

Source

resources.lisp.

Function: resource-name (resource)

Retrieves and returns the "name part" of the script name of RESOURCE, i.e. the last non-empty string behind a slash. Note that the result can be NIL. This is a bit similar to CL:FILE-NAMESTRING.

Package

cl-webdav.

Source

resources.lisp.

Function: retrieve-properties (key)

Retrieves the properties stored under the (EQUAL) key KEY.

Package

cl-webdav.

Source

properties.lisp.

Function: spec (node)

Returns the corresponding "spec" from +WEBDAV-DTD+ if NODE is a DAV node in XMLS format.

Package

cl-webdav.

Source

xml.lisp.

Function: starts-with-p (seq prefix &key test)

Returns a true value if the sequence SEQ starts with the sequence PREFIX whereby the elements are compared using TEST.

Package

cl-webdav.

Source

util.lisp.

Function: status-line (return-code)

Returns a full HTTP/1.1 status line corresponding to the return code RETURN-CODE.

Package

cl-webdav.

Source

util.lisp.

Function: store-properties (key properties)

Stores PROPERTIES under the (EQUAL) key KEY.

Package

cl-webdav.

Source

properties.lisp.

Function: url-decode* (string)

Tries to URL-decode STRING with the UTF-8 external format first and then uses LATIN-1 if that fails.

Package

cl-webdav.

Source

util.lisp.

Function: walk-xmls-node (handler xmls-node)

Helper function for SERIALIZE-XMLS-NODE. Walks recursively through the XMLS node XMLS-NODE and calls the SAX handler HANDLER when appropriate.

Package

cl-webdav.

Source

xml.lisp.

Function: whitespace-string-p (thing)

Returns a true value if THING is a string consisting solely of whitespace.

Package

cl-webdav.

Source

util.lisp.


4.2.5 Generic functions

Generic Function: create-resource (resource-class script-name)

Creates and returns an object of type
RESOURCE-CLASS (a subclass of RESOURCE) corresponding to the script name SCRIPT-NAME (which is already URL-decoded).

Package

cl-webdav.

Source

resources.lisp.

Methods
Method: create-resource ((resource-class standard-class) script-name)
Method: create-resource ((resource-class-name symbol) script-name)
Generic Reader: element-stack (object)
Generic Writer: (setf element-stack) (object)
Package

cl-webdav.

Methods
Reader Method: element-stack ((xmls-builder xmls-builder))
Writer Method: (setf element-stack) ((xmls-builder xmls-builder))

Used to keep track of the stack
of "open" (encountered SAX:START-ELEMENT, but didn’t see SAX:END-ELEMENT yet) elements.

Source

xml.lisp.

Target Slot

element-stack.

Generic Reader: real-path (object)
Generic Writer: (setf real-path) (object)
Package

cl-webdav.

Methods
Reader Method: real-path ((file-resource file-resource))
Writer Method: (setf real-path) ((file-resource file-resource))

The pathname of the resource within the local file system.

Source

file-resources.lisp.

Target Slot

real-path.

Generic Reader: root (object)
Generic Writer: (setf root) (object)
Package

cl-webdav.

Methods
Reader Method: root ((xmls-builder xmls-builder))
Writer Method: (setf root) ((xmls-builder xmls-builder))

The root of the XML document.

Source

xml.lisp.

Target Slot

root.

Generic Function: validate (node spec pos)

Validates the node NODE against the spec (see
function SPEC) SPEC. SPEC can be a string (denoting the local name of a DAV node), one of the symbols :ANY, :EMPTY, or :PCDATA, a two element list beginning with * or ?, a list beginning with :CHOICE, or any other list denoting a sequence. If POS is NIL, SPEC must be a string and the node itself is validated to conform to SPEC and a true value is returned iff that’s the case. Otherwise, POS should be a non-negative integer N, and the Nth child of NODE will be validated. The true value returned in this case (i.e. if the Nth child is valid) will be another integer denoting the next child which has to be validated. Furthermore, whitespace is removed from elements which can only have element content.

Package

cl-webdav.

Source

xml.lisp.

Methods
Method: validate (node (spec list) pos)

Compound validation for choices, repetitions, and sequences - dispatces on the first element of SPEC.

Method: validate (node (spec (eql :pcdata)) pos)

Succeeds (and this increments POS by 1) if the child at position POS is not an XMLS node (i.e. if it’s character data).

Method: validate (node (spec (eql :empty)) pos)

Succeeds (with a return value of 1) iff there are no children.

Method: validate (node (spec (eql :any)) pos)

Always succeeds and eats up all remaining children of NODE.

Method: validate (node (spec string) pos)

Validates NODE or the child at position POS to conform to the spec for the DAV node named SPEC.


4.2.6 Classes

Class: xmls-builder

This is like CXML’s XMLS-BUILDER class, but
without attempting to be compatible with XMLS, so we can get namespaces right.

Package

cl-webdav.

Source

xml.lisp.

Direct superclasses

default-handler.

Direct methods
Direct slots
Slot: element-stack

Used to keep track of the stack
of "open" (encountered SAX:START-ELEMENT, but didn’t see SAX:END-ELEMENT yet) elements.

Readers

element-stack.

Writers

(setf element-stack).

Slot: root

The root of the XML document.

Readers

root.

Writers

(setf root).


Appendix A Indexes


A.1 Concepts


A.2 Functions

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

(
(setf element-stack): Private generic functions
(setf element-stack): Private generic functions
(setf node-attributes): Public ordinary functions
(setf node-children): Public ordinary functions
(setf real-path): Private generic functions
(setf real-path): Private generic functions
(setf resource-script-name): Public generic functions
(setf resource-script-name): Public generic functions
(setf root): Private generic functions
(setf root): Private generic functions

A
accept-request-p: Public generic functions
accept-request-p: Public generic functions
accept-request-p: Public generic functions
accept-request-p: Public generic functions
all-dead-property-designators: Private ordinary functions
all-property-designators: Private ordinary functions

B
bad-gateway: Private ordinary functions

C
characters: Public standalone methods
collect-properties: Private ordinary functions
compute-real-path: Private ordinary functions
conflict: Private ordinary functions
constantly-nil: Private ordinary functions
copy-dead-properties: Public generic functions
copy-dead-properties: Public generic functions
copy-dead-properties: Public generic functions
copy-handler: Private ordinary functions
copy-or-move-resource*: Private ordinary functions
copy-properties: Private ordinary functions
copy-resource: Public generic functions
copy-resource: Public generic functions
create-collection: Public generic functions
create-collection: Public generic functions
create-dav-dispatcher: Public generic functions
create-dav-dispatcher: Public generic functions
create-dav-dispatcher: Public generic functions
create-dav-dispatcher: Public generic functions
create-resource: Private generic functions
create-resource: Private generic functions
create-resource: Private generic functions
creation-date: Private ordinary functions

D
dav-dispatcher: Private ordinary functions
dav-node: Public ordinary functions
dav-property-function: Private ordinary functions
defconstant: Private macros
define-return-code-shortcut: Private macros
delete-handler: Private ordinary functions

E
element-stack: Private generic functions
element-stack: Private generic functions
end-document: Public standalone methods
end-element: Public standalone methods

F
failed-dependency: Private ordinary functions
file-resource-base-path-namestring: Public generic functions
file-resource-base-path-namestring: Public generic functions
file-resource-base-path-namestring: Public generic functions
file-resource-base-path-namestring: Public generic functions
file-resource-base-uri: Public generic functions
file-resource-base-uri: Public generic functions
file-resource-base-uri: Public generic functions
forbidden: Private ordinary functions
Function, (setf node-attributes): Public ordinary functions
Function, (setf node-children): Public ordinary functions
Function, all-dead-property-designators: Private ordinary functions
Function, all-property-designators: Private ordinary functions
Function, bad-gateway: Private ordinary functions
Function, collect-properties: Private ordinary functions
Function, compute-real-path: Private ordinary functions
Function, conflict: Private ordinary functions
Function, constantly-nil: Private ordinary functions
Function, copy-handler: Private ordinary functions
Function, copy-or-move-resource*: Private ordinary functions
Function, copy-properties: Private ordinary functions
Function, creation-date: Private ordinary functions
Function, dav-dispatcher: Private ordinary functions
Function, dav-node: Public ordinary functions
Function, dav-property-function: Private ordinary functions
Function, delete-handler: Private ordinary functions
Function, failed-dependency: Private ordinary functions
Function, forbidden: Private ordinary functions
Function, get-content-length: Private ordinary functions
Function, get-content-type: Private ordinary functions
Function, get-dead-property: Private ordinary functions
Function, get-handler: Private ordinary functions
Function, get-last-modified: Private ordinary functions
Function, get-property: Private ordinary functions
Function, get-resource: Private ordinary functions
Function, head-handler: Private ordinary functions
Function, ignore-non-dav-elements: Private ordinary functions
Function, iso-8601-date: Private ordinary functions
Function, local-name: Public ordinary functions
Function, make-xmls-builder: Private ordinary functions
Function, make-xmls-node: Private ordinary functions
Function, md5-hex: Private ordinary functions
Function, method-not-allowed: Private ordinary functions
Function, mkcol-handler: Private ordinary functions
Function, move-handler: Private ordinary functions
Function, move-properties: Private ordinary functions
Function, multi-status: Private ordinary functions
Function, namespace-uri: Public ordinary functions
Function, node-attributes: Public ordinary functions
Function, node-children: Public ordinary functions
Function, not-found: Private ordinary functions
Function, not-implemented: Private ordinary functions
Function, options-dispatcher: Public ordinary functions
Function, options-handler: Public ordinary functions
Function, parse-dav: Public ordinary functions
Function, parse-propfind: Private ordinary functions
Function, precondition-failed: Private ordinary functions
Function, property-equal: Private ordinary functions
Function, propfind-handler: Private ordinary functions
Function, proppatch-handler: Private ordinary functions
Function, propstat: Private ordinary functions
Function, put-handler: Private ordinary functions
Function, remove-content: Private ordinary functions
Function, remove-properties: Private ordinary functions
Function, remove-resource*: Private ordinary functions
Function, resource-created: Private ordinary functions
Function, resource-href: Private ordinary functions
Function, resource-name: Private ordinary functions
Function, retrieve-properties: Private ordinary functions
Function, serialize-xmls-node: Public ordinary functions
Function, spec: Private ordinary functions
Function, starts-with-p: Private ordinary functions
Function, status-line: Private ordinary functions
Function, store-properties: Private ordinary functions
Function, url-decode*: Private ordinary functions
Function, walk-xmls-node: Private ordinary functions
Function, whitespace-string-p: Private ordinary functions
Function, xmls-node-p: Public ordinary functions

G
Generic Function, (setf element-stack): Private generic functions
Generic Function, (setf real-path): Private generic functions
Generic Function, (setf resource-script-name): Public generic functions
Generic Function, (setf root): Private generic functions
Generic Function, accept-request-p: Public generic functions
Generic Function, copy-dead-properties: Public generic functions
Generic Function, copy-resource: Public generic functions
Generic Function, create-collection: Public generic functions
Generic Function, create-dav-dispatcher: Public generic functions
Generic Function, create-resource: Private generic functions
Generic Function, element-stack: Private generic functions
Generic Function, file-resource-base-path-namestring: Public generic functions
Generic Function, file-resource-base-uri: Public generic functions
Generic Function, get-content: Public generic functions
Generic Function, get-dead-properties: Public generic functions
Generic Function, move-dead-properties: Public generic functions
Generic Function, move-resource: Public generic functions
Generic Function, real-path: Private generic functions
Generic Function, remove-dead-properties: Public generic functions
Generic Function, remove-dead-property: Public generic functions
Generic Function, remove-resource: Public generic functions
Generic Function, resource-children: Public generic functions
Generic Function, resource-collection-p: Public generic functions
Generic Function, resource-content-language: Public generic functions
Generic Function, resource-content-type: Public generic functions
Generic Function, resource-creation-date: Public generic functions
Generic Function, resource-display-name: Public generic functions
Generic Function, resource-etag: Public generic functions
Generic Function, resource-exists: Public generic functions
Generic Function, resource-length: Public generic functions
Generic Function, resource-parent: Public generic functions
Generic Function, resource-script-name: Public generic functions
Generic Function, resource-source: Public generic functions
Generic Function, resource-type: Public generic functions
Generic Function, resource-uri-prefix: Public generic functions
Generic Function, resource-write-date: Public generic functions
Generic Function, root: Private generic functions
Generic Function, send-content: Public generic functions
Generic Function, set-dead-property: Public generic functions
Generic Function, validate: Private generic functions
get-content: Public generic functions
get-content: Public generic functions
get-content-length: Private ordinary functions
get-content-type: Private ordinary functions
get-dead-properties: Public generic functions
get-dead-properties: Public generic functions
get-dead-properties: Public generic functions
get-dead-property: Private ordinary functions
get-handler: Private ordinary functions
get-last-modified: Private ordinary functions
get-property: Private ordinary functions
get-resource: Private ordinary functions

H
head-handler: Private ordinary functions

I
ignore-non-dav-elements: Private ordinary functions
initialize-instance: Public standalone methods
iso-8601-date: Private ordinary functions

L
local-name: Public ordinary functions

M
Macro, defconstant: Private macros
Macro, define-return-code-shortcut: Private macros
make-xmls-builder: Private ordinary functions
make-xmls-node: Private ordinary functions
md5-hex: Private ordinary functions
Method, (setf element-stack): Private generic functions
Method, (setf real-path): Private generic functions
Method, (setf resource-script-name): Public generic functions
Method, (setf root): Private generic functions
Method, accept-request-p: Public generic functions
Method, accept-request-p: Public generic functions
Method, accept-request-p: Public generic functions
Method, characters: Public standalone methods
Method, copy-dead-properties: Public generic functions
Method, copy-dead-properties: Public generic functions
Method, copy-resource: Public generic functions
Method, create-collection: Public generic functions
Method, create-dav-dispatcher: Public generic functions
Method, create-dav-dispatcher: Public generic functions
Method, create-dav-dispatcher: Public generic functions
Method, create-resource: Private generic functions
Method, create-resource: Private generic functions
Method, element-stack: Private generic functions
Method, end-document: Public standalone methods
Method, end-element: Public standalone methods
Method, file-resource-base-path-namestring: Public generic functions
Method, file-resource-base-path-namestring: Public generic functions
Method, file-resource-base-path-namestring: Public generic functions
Method, file-resource-base-uri: Public generic functions
Method, file-resource-base-uri: Public generic functions
Method, get-content: Public generic functions
Method, get-dead-properties: Public generic functions
Method, get-dead-properties: Public generic functions
Method, initialize-instance: Public standalone methods
Method, move-dead-properties: Public generic functions
Method, move-dead-properties: Public generic functions
Method, move-resource: Public generic functions
Method, real-path: Private generic functions
Method, remove-dead-properties: Public generic functions
Method, remove-dead-properties: Public generic functions
Method, remove-dead-property: Public generic functions
Method, remove-dead-property: Public generic functions
Method, remove-resource: Public generic functions
Method, resource-children: Public generic functions
Method, resource-collection-p: Public generic functions
Method, resource-content-language: Public generic functions
Method, resource-content-type: Public generic functions
Method, resource-content-type: Public generic functions
Method, resource-creation-date: Public generic functions
Method, resource-display-name: Public generic functions
Method, resource-etag: Public generic functions
Method, resource-exists: Public generic functions
Method, resource-length: Public generic functions
Method, resource-parent: Public generic functions
Method, resource-script-name: Public generic functions
Method, resource-source: Public generic functions
Method, resource-type: Public generic functions
Method, resource-uri-prefix: Public generic functions
Method, resource-write-date: Public generic functions
Method, root: Private generic functions
Method, send-content: Public generic functions
Method, set-dead-property: Public generic functions
Method, set-dead-property: Public generic functions
Method, start-element: Public standalone methods
Method, validate: Private generic functions
Method, validate: Private generic functions
Method, validate: Private generic functions
Method, validate: Private generic functions
Method, validate: Private generic functions
method-not-allowed: Private ordinary functions
mkcol-handler: Private ordinary functions
move-dead-properties: Public generic functions
move-dead-properties: Public generic functions
move-dead-properties: Public generic functions
move-handler: Private ordinary functions
move-properties: Private ordinary functions
move-resource: Public generic functions
move-resource: Public generic functions
multi-status: Private ordinary functions

N
namespace-uri: Public ordinary functions
node-attributes: Public ordinary functions
node-children: Public ordinary functions
not-found: Private ordinary functions
not-implemented: Private ordinary functions

O
options-dispatcher: Public ordinary functions
options-handler: Public ordinary functions

P
parse-dav: Public ordinary functions
parse-propfind: Private ordinary functions
precondition-failed: Private ordinary functions
property-equal: Private ordinary functions
propfind-handler: Private ordinary functions
proppatch-handler: Private ordinary functions
propstat: Private ordinary functions
put-handler: Private ordinary functions

R
real-path: Private generic functions
real-path: Private generic functions
remove-content: Private ordinary functions
remove-dead-properties: Public generic functions
remove-dead-properties: Public generic functions
remove-dead-properties: Public generic functions
remove-dead-property: Public generic functions
remove-dead-property: Public generic functions
remove-dead-property: Public generic functions
remove-properties: Private ordinary functions
remove-resource: Public generic functions
remove-resource: Public generic functions
remove-resource*: Private ordinary functions
resource-children: Public generic functions
resource-children: Public generic functions
resource-collection-p: Public generic functions
resource-collection-p: Public generic functions
resource-content-language: Public generic functions
resource-content-language: Public generic functions
resource-content-type: Public generic functions
resource-content-type: Public generic functions
resource-content-type: Public generic functions
resource-created: Private ordinary functions
resource-creation-date: Public generic functions
resource-creation-date: Public generic functions
resource-display-name: Public generic functions
resource-display-name: Public generic functions
resource-etag: Public generic functions
resource-etag: Public generic functions
resource-exists: Public generic functions
resource-exists: Public generic functions
resource-href: Private ordinary functions
resource-length: Public generic functions
resource-length: Public generic functions
resource-name: Private ordinary functions
resource-parent: Public generic functions
resource-parent: Public generic functions
resource-script-name: Public generic functions
resource-script-name: Public generic functions
resource-source: Public generic functions
resource-source: Public generic functions
resource-type: Public generic functions
resource-type: Public generic functions
resource-uri-prefix: Public generic functions
resource-uri-prefix: Public generic functions
resource-write-date: Public generic functions
resource-write-date: Public generic functions
retrieve-properties: Private ordinary functions
root: Private generic functions
root: Private generic functions

S
send-content: Public generic functions
send-content: Public generic functions
serialize-xmls-node: Public ordinary functions
set-dead-property: Public generic functions
set-dead-property: Public generic functions
set-dead-property: Public generic functions
spec: Private ordinary functions
start-element: Public standalone methods
starts-with-p: Private ordinary functions
status-line: Private ordinary functions
store-properties: Private ordinary functions

U
url-decode*: Private ordinary functions

V
validate: Private generic functions
validate: Private generic functions
validate: Private generic functions
validate: Private generic functions
validate: Private generic functions
validate: Private generic functions

W
walk-xmls-node: Private ordinary functions
whitespace-string-p: Private ordinary functions

X
xmls-node-p: Public ordinary functions


A.3 Variables

Jump to:   *   +  
C   E   R   S  
Index Entry  Section

*
*allowed-methods*: Public special variables
*dav-compliance-classes*: Public special variables
*file-resource-base-path-namestring*: Public special variables
*file-resource-base-uri*: Public special variables
*property-hash*: Private special variables
*resource-class*: Public special variables

+
+buffer-length+: Private constants
+dav-property-alist+: Private constants
+dav-property-designators+: Private constants
+latin-1+: Private constants
+utf-8+: Private constants
+webdav-dtd+: Private constants

C
Constant, +buffer-length+: Private constants
Constant, +dav-property-alist+: Private constants
Constant, +dav-property-designators+: Private constants
Constant, +latin-1+: Private constants
Constant, +utf-8+: Private constants
Constant, +webdav-dtd+: Private constants

E
element-stack: Private classes

R
real-path: Public classes
root: Private classes

S
script-name: Public classes
Slot, element-stack: Private classes
Slot, real-path: Public classes
Slot, root: Private classes
Slot, script-name: Public classes
Special Variable, *allowed-methods*: Public special variables
Special Variable, *dav-compliance-classes*: Public special variables
Special Variable, *file-resource-base-path-namestring*: Public special variables
Special Variable, *file-resource-base-uri*: Public special variables
Special Variable, *property-hash*: Private special variables
Special Variable, *resource-class*: Public special variables


A.4 Data types

Jump to:   A   C   F   H   P   R   S   U   X  
Index Entry  Section

A
authorized-file-resource: Public classes
authorized-file-resources.lisp: The cl-webdav/authorized-file-resources․lisp file

C
cl-webdav: The cl-webdav system
cl-webdav: The cl-webdav package
cl-webdav.asd: The cl-webdav/cl-webdav․asd file
Class, authorized-file-resource: Public classes
Class, file-resource: Public classes
Class, resource: Public classes
Class, xmls-builder: Private classes

F
File, authorized-file-resources.lisp: The cl-webdav/authorized-file-resources․lisp file
File, cl-webdav.asd: The cl-webdav/cl-webdav․asd file
File, file-resources.lisp: The cl-webdav/file-resources․lisp file
File, handlers.lisp: The cl-webdav/handlers․lisp file
File, packages.lisp: The cl-webdav/packages․lisp file
File, properties.lisp: The cl-webdav/properties․lisp file
File, resources.lisp: The cl-webdav/resources․lisp file
File, specials.lisp: The cl-webdav/specials․lisp file
File, util.lisp: The cl-webdav/util․lisp file
File, xml.lisp: The cl-webdav/xml․lisp file
file-resource: Public classes
file-resources.lisp: The cl-webdav/file-resources․lisp file

H
handlers.lisp: The cl-webdav/handlers․lisp file

P
Package, cl-webdav: The cl-webdav package
packages.lisp: The cl-webdav/packages․lisp file
properties.lisp: The cl-webdav/properties․lisp file

R
resource: Public classes
resources.lisp: The cl-webdav/resources․lisp file

S
specials.lisp: The cl-webdav/specials․lisp file
System, cl-webdav: The cl-webdav system

U
util.lisp: The cl-webdav/util․lisp file

X
xml.lisp: The cl-webdav/xml․lisp file
xmls-builder: Private classes