# $Id: Dav.xotcl,v 1.4 2006/02/18 22:17:33 neumann Exp $ package provide xotcl::comm::dav 0.9 package require XOTcl 1 namespace eval ::xotcl::comm::dav { package require xotcl::comm::httpAccess namespace import ::xotcl::* Class Dav -superclass Http Dav instproc initialize args { my instvar contentType #showCall set contentType text/xml next } Dav instproc PROPFIND {} { #showCall # extra dav headers # Depth: ("0" | "1" | "infinity") [infinity is the default] # body is a propfind XML-Element # # # # # this should be set by the clients # # # # my open } Dav instproc PROPPATCH {} { #showCall # body is a propertyupdate XML-Element # # # # set xmlReqBody($method) " # # # # # # # " my open } Dav instproc MKCOL {} { #showCall # invoked without a request body (may contain a message body?) my open } Dav instproc GET {} { #showCall # invoked without a request body and without extra header # back to HTTP class next } Dav instproc HEAD {} { #showCall # invoked without a request bodyand without extra header # back to HTTP class next } Dav instproc POST {} { #showCall # the same as in RFC2068 # back to HTTP class next } Dav instproc DELETE {} { #showCall # extra dav headers # Depth: ("0" | "1" | "infinity") # invoked without a request body my open } Dav instproc PUT {} { #showCall # PUT for Non-Collection Resources --> RFC2068 # PUT for Collections --> MKCOL # next } Dav instproc COPY {} { #showCall # extra dav headers # If: [see 9.4 WebDAV] # Destination: [see RFC2396 for the definition of absolutURI] # Depth: ("0" | "1" | "infinity") # Overwrite: ("T" | "F") # body is a propertybehavior XML-Element # # # # my open } Dav instproc MOVE {} { #showCall # extra dav headers # If: [see 9.4 WebDAV] # Destination: [see RFC2396 for the definition of absolutURI] # Depth: "infinity" [see 8.9.2] # Overwrite: ("T" | "F") # body is a propertybehavior XML-Element # see COPY my open } Dav instproc LOCK {} { #showCall # extra dav headers # If: [see 9.4 WebDAV] # Destination: [see RFC2396 for the definition of absolutURI] # Depth: ("0" | "1" | "infinity") # Timeout: [see 9.8 WebDAV] # Authorization: (defined in HTTP1.1 in 14.8) # body is a lockinfo XML-Element # # # # # # # my open } # The Lock-Token request header is used with the UNLOCK method to # identify the lock to be removed. Dav instproc UNLOCK {} { my instvar headers #showCall # extra dav headers # Lock-Token: [see 8.11 in WebDAV] # invoked without a request body my open } #--------------------- # Utility # #--------------------- #? Object xmlReqBodyManager xmlReqBodyManager proc requireXmlReqBody {request} { } #? Object davHeaderManager davHeaderManager proc requireDavHeader {request} { } #LOCK /DAV/welcome.html HTTP/1.1 #Host: wawog #Connection: close namespace export Dav \ xmlReqBodyManager davHeaderManager } namespace import ::xotcl::comm::dav::*