Coils Specific Properties via WebDAV

WebDAV clients operate in the server's folder and document hierarchy. This is a convenient and powerful way to approach and manipulate the server's data - but it does obscure a significant amount of information as well. For example a document in WebDAV is known by it's filename [and perhaps its displayName as well, depending on the client]. But the object id is unavailable, as is the object id of the folder containing the document, the SHA-512 checksum, and a variety of other attributes.

Particularly when learning the server's data model or developing clients it can be useful to explore both the WebDAV presentation as well as the other available attributes. Most WebDAV clients provide no means to access server-specific values, but fortunately the cross platform WebDAV utility cadaver provides exactly this. With cadaver the user or developer can easily query the value of attributes in alternative namespaces.

The OpenGroupware Coils' WebDAV presentation makes a variety of useful object attributes available as properties through its namespace: 57c7fc84-3cea-417d-af54-b659eb87a046. The set namespace command in cadaver is used to determine the namespace for subsequent property queries. With the namespace set the propget command is used to retrieve the value of a named property, for example: propget filename.txt objectid will retrieve of value of the object id property of the named object.

The ability to set an arbitrary namespace for the property query means the feature is not limited to asking for OpenGroupware Coils specific attributes; it is possible to query for attributes defined by the various specifications [CalDAV, CardDAV, GroupDAV, etc...] or for other vendor specific properties like those used to emulate Microsoft file attributes.

In addition to simply querying properties cadaver also provides for deleting and setting mutable properties, and for locking objects and querying objects for existing locks. It is an indispensable tool for the WebDAV developer.

cadaver is packaged in the main repositories of all major LINUX distributions, can be built for Mac OS/X, and runs on Microsoft Windows via Cygwin.