Annotation of libwww/Library/src/HTDAV.html, revision 1.1

1.1     ! kirschpi    1: <?xml version="1.0" encoding="iso-8859-1"?>
        !             2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        !             3: "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
        !             4: <html xmlns="http://www.w3.org/1999/xhtml">
        !             5: <head>
        !             6:   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        !             7:   <title>W3C Sample Code Library libwww WebDAV Access Methods</title>
        !             8:   <meta name="generator" content="amaya 5.3, see http://www.w3.org/Amaya/" />
        !             9: </head>
        !            10: 
        !            11: <body>
        !            12: <h1>W3C Sample Code Library libwww WebDAV Access Methods</h1>
        !            13: <pre>/*
        !            14: **     (c) COPYRIGHT MIT 1995.
        !            15: **     Please first read the full copyright statement in the file COPYRIGH.
        !            16: */</pre>
        !            17: 
        !            18: <p>This module contains methods for accessing URIs using WebDAV methods. It
        !            19: also contains functions for headers definition.</p>
        !            20: 
        !            21: <p>This module is implemented by <a href="HTDAV.h">HTDAV.c</a> and it is a
        !            22: part of the <a href="http://www.w3.org/Library/">W3C Sample
        !            23: CodeLibrary</a>.</p>
        !            24: <pre>#ifndef HTDAV_H
        !            25: #define HTDAV_H
        !            26: 
        !            27: #ifdef HT_DAV
        !            28: </pre>
        !            29: 
        !            30: <h2>WebDAV HEADERS</h2>
        !            31: 
        !            32: <p>WebDAV extension protocol defines new headers to be used in its requests.
        !            33: See <a href="http://www.ietf.org/rfc/rfc2518.txt">RFC2518</a> for details.</p>
        !            34: <pre>typedef struct _HTDAVHeaders HTDAVHeaders;
        !            35: 
        !            36: extern HTDAVHeaders * HTDAVHeaders_new (void);
        !            37: extern BOOL HTDAVHeaders_delete (HTDAVHeaders *me);
        !            38: </pre>
        !            39: 
        !            40: <h3>If Header</h3>
        !            41: 
        !            42: <p>Manipulates the "If" header, which describes a series of state lists. The
        !            43: caller must assure that the parameter "If" is well-formed. Below, you can see
        !            44: a small description of If header format. See section 9.4 of <a
        !            45: href="http://www.ietf.org/rfc/rfc2518.tx">RFC2518</a> for details.</p>
        !            46: 
        !            47: <p>If = "If" ":" ( 1*NOTAGGED | 1*TAGGED )</p>
        !            48: 
        !            49: <p>NOTAGGED = LIST</p>
        !            50: 
        !            51: <p>TAGGED = CODED-URL 1*LIST</p>
        !            52: 
        !            53: <p>LIST = "(" 1*( ["Not"] (STATE-TOKEN | "[" ENTITY-TAG "]" ) ) ")"</p>
        !            54: 
        !            55: <p>STATE-TOKEN = CODED-URL</p>
        !            56: 
        !            57: <p>CODED-URL = "&lt;" AbsoluteURI "&gt;</p>
        !            58: 
        !            59: <p><strong>Note</strong>: The caller should free the strings returned by
        !            60: HTDAV_ifHeader  method.</p>
        !            61: <pre>extern BOOL HTDAV_setIfHeader (HTDAVHeaders *me, const char *If);
        !            62: extern BOOL HTDAV_deleteIfHeader (HTDAVHeaders * me);
        !            63: extern char * HTDAV_ifHeader (HTDAVHeaders *me);
        !            64: </pre>
        !            65: 
        !            66: <h3>Depth Header</h3>
        !            67: 
        !            68: <p>Manipulates the "Depth" header. Depth header is used with methods executed
        !            69: on resource which could have internal members (Collections) to indicate
        !            70: whether the method should be applied to the resource children.</p>
        !            71: 
        !            72: <p>The caller must assure that the parameter "Depth" is "0", "1" or
        !            73: "infinity", and that its value can be applied in the used resquest method
        !            74: (for example, LOCK method does not support Depth value 1).</p>
        !            75: 
        !            76: <p><strong>Note</strong>: The caller should free the string returned by
        !            77: HTDAV_DepthHeader method.</p>
        !            78: <pre>extern BOOL HTDAV_setDepthHeader (HTDAVHeaders *me, const char *Depth);
        !            79: extern BOOL HTDAV_deleteDepthHeader (HTDAVHeaders * me);
        !            80: extern char * HTDAV_DepthHeader (HTDAVHeaders *me);</pre>
        !            81: 
        !            82: <h3>Lock-Tocken header</h3>
        !            83: 
        !            84: <p>Manipulates the "LockToken" header. It is used in UNLOCK method to
        !            85: identify the lock to be removed. The caller must assure that the parameter is
        !            86: a state token well-formed (<a
        !            87: href="http://www.ietf.org/rfc/rfc2518.txt">RFC2518</a> section 9.5).</p>
        !            88: 
        !            89: <p><strong>Note</strong>: The caller should free the string returned by
        !            90: HTDAV_LockTokenHeader method.</p>
        !            91: <pre>extern BOOL HTDAV_setLockTokenHeader (HTDAVHeaders *me, const char *LockToken);
        !            92: extern BOOL HTDAV_deleteLockTokenHeader (HTDAVHeaders * me);
        !            93: extern char * HTDAV_LockTokenHeader (HTDAVHeaders *me);</pre>
        !            94: 
        !            95: <h3>Destination Header</h3>
        !            96: 
        !            97: <p>Manipulates the "Destination" header. It is used in COPY and MOVE methods
        !            98: to identify a destination resource. The caller must assure that the parameter
        !            99: is an absolute URI.</p>
        !           100: 
        !           101: <p><strong>Note</strong>: The caller should free the string returned by
        !           102: HTDAV_DestinationHeader method.</p>
        !           103: <pre>extern BOOL HTDAV_setDestinationHeader (HTDAVHeaders *me, const char *Destination);
        !           104: extern BOOL HTDAV_deleteDestinationHeader (HTDAVHeaders * me);
        !           105: extern char * HTDAV_DestinationHeader (HTDAVHeaders *me);</pre>
        !           106: 
        !           107: <h3>Timeout Header</h3>
        !           108: 
        !           109: <p>Manipulates the "Timeout" header. It is used in LOCK requests to indicate
        !           110: the desired timeout value for the requested lock. However, according to the
        !           111: <a href="http://www.ietf.org/rfc/rfc2518.txt">RFC2518</a>, the server is not
        !           112: required to honor this value.</p>
        !           113: 
        !           114: <p>The caller must assure that the parameter follows the specification in the
        !           115: section 9.8 of RFC 2518:</p>
        !           116: 
        !           117: <p>Timeout = "Timeout" ":" 1#TIMETYPE</p>
        !           118: 
        !           119: <p>TIMETYPE = ( "Second-" VAL | "Infinite" | OTHER )</p>
        !           120: 
        !           121: <p>VAL = 1*digit</p>
        !           122: 
        !           123: <p>OTHER = "Extend" Field ; <a
        !           124: href="http://www.ietf.org/rfc/rfc2068.txt">RFC2068</a> - section 4.2</p>
        !           125: 
        !           126: <p><strong>Note</strong>: The caller should free the string returned by
        !           127: HTDAV_TimeoutHeader  method.</p>
        !           128: <pre>extern BOOL HTDAV_setTimeoutHeader (HTDAVHeaders *me, const char *Timeout);
        !           129: extern BOOL HTDAV_deleteTimeoutHeader (HTDAVHeaders * me);
        !           130: extern char * HTDAV_TimeoutHeader (HTDAVHeaders *me);
        !           131: </pre>
        !           132: 
        !           133: <h3>Overwrite Header</h3>
        !           134: 
        !           135: <p>Manipulates the "Overwrite" header. It is used in COPY and MOVE methods to
        !           136: specify whether the server should overwrite a destination resource.</p>
        !           137: <pre>extern BOOL HTDAV_setOverwriteHeader (HTDAVHeaders *me, BOOL Overwrite);
        !           138: extern BOOL HTDAV_deleteOverwriteHeader (HTDAVHeaders * me); 
        !           139: extern BOOL HTDAV_OverwriteHeader (HTDAVHeaders * me); 
        !           140: </pre>
        !           141: 
        !           142: <h2>WebDAV REQUESTS</h2>
        !           143: 
        !           144: <p>WebDAV extension protocol defines new methods: LOCK, UNLOCK, MOVE, COPY,
        !           145: MKCOL, PROPFIND, PROPPATCH (See <a
        !           146: href="http://www.ietf.org/rfc/rfc2518.txt">RFC2518</a> for details).</p>
        !           147: 
        !           148: <h3>LOCK Requests</h3>
        !           149: 
        !           150: <p>A LOCK request create or refresh a lock over the destiny URI. If it wants
        !           151: to create a new lock, the request should have a XML body (parameter
        !           152: "xmlbody"), but if it is a refresh request, this body may be NULL and the
        !           153: header "If" should be set in HTDAVHeaders object.</p>
        !           154: <pre>extern BOOL HTLOCKDocumentAnchor(HTRequest * request, HTAnchor * dst,
        !           155:                                  HTParentAnchor *xmlbody, HTDAVHeaders *headers);
        !           156: extern BOOL HTLOCKAnchor (HTRequest * request,HTAnchor * dst,
        !           157:                                  char * xmlbody, HTDAVHeaders * headers); 
        !           158: extern BOOL HTLOCKAbsolute (HTRequest * request, const char * uri,
        !           159:                                  char * xmlbody, HTDAVHeaders * headers);
        !           160: extern BOOL HTLOCKRelative (HTRequest * request, const char * relative,
        !           161:                                  HTParentAnchor * base, char * xmlbody,
        !           162:                                  HTDAVHeaders * headers);</pre>
        !           163: 
        !           164: <h3>UNLOCK Requests</h3>
        !           165: 
        !           166: <p>An UNLOCK request removes a lock from the destiny URI. The request must
        !           167: contain the Lock-Token header set in HTDAVHeaders object (so, the
        !           168: HTDAVHeaders * headers parameter can't be NULL).</p>
        !           169: <pre>extern BOOL HTUNLOCKAnchor (HTRequest * request, HTAnchor * dst,
        !           170:                             HTDAVHeaders * headers);
        !           171: extern BOOL HTUNLOCKAbsolute (HTRequest * request, const char * uri,
        !           172:                             HTDAVHeaders * headers);
        !           173: extern BOOL HTUNLOCKRelative (HTRequest * request, const char * relative,
        !           174:                             HTParentAnchor * base, HTDAVHeaders * headers);</pre>
        !           175: 
        !           176: <h3>PROPFIND Requests</h3>
        !           177: 
        !           178: <p>PROPFIND requests returns properties defined for the resource. The request
        !           179: may contain xml entity body with a "propfind" element, which may include an
        !           180: "allprop" element (to get all properties), a "propname" element (the name of
        !           181: all properties defined), and a "prop" element containing the desired
        !           182: properties.</p>
        !           183: <pre>extern BOOL HTPROPFINDAnchor (HTRequest * request, HTAnchor * dst,
        !           184:                           const char * xmlbody, HTDAVHeaders * headers);
        !           185: extern BOOL HTPROPFINDDocumentAnchor (HTRequest * request, HTAnchor * dst,
        !           186:                           HTParentAnchor * xmlbody, HTDAVHeaders * headers);
        !           187: extern BOOL HTPROPFINDAbsolute (HTRequest * request, const char * uri,
        !           188:                           const char * xmlbody, HTDAVHeaders * headers);
        !           189: extern BOOL HTPROPFINDRelative (HTRequest * request, const char * relative,
        !           190:                           HTParentAnchor * base, const char * xmlbody,
        !           191:                           HTDAVHeaders * headers);</pre>
        !           192: 
        !           193: <h3>PROPPATCH Requests</h3>
        !           194: 
        !           195: <p>PROPPATCH requests sets or removes properties defined for the resource.
        !           196: The request MUST contain xml message body (parameter xmlbody) with a
        !           197: "propertyupdate" element, which may include a "set" element (to set the
        !           198: properties) or a "remove" element (to remove the properties).</p>
        !           199: <pre>extern BOOL HTPROPPATCHAnchor (HTRequest * request, HTAnchor * dst,
        !           200:                          const char * xmlbody,HTDAVHeaders * headers);
        !           201: extern BOOL HTPROPPATCHDocumentAnchor (HTRequest * request,HTAnchor * dst,
        !           202:                          HTParentAnchor * xmlbody,HTDAVHeaders * headers);
        !           203: extern BOOL HTPROPPATCHAbsolute (HTRequest * request, const char * uri,
        !           204:                          const char * xmlbody, HTDAVHeaders * headers);
        !           205: extern BOOL HTPROPPATCHRelative (HTRequest * request, const char * relative,
        !           206:                          HTParentAnchor * base, const char * xmlbody,
        !           207:                          HTDAVHeaders * headers);</pre>
        !           208: 
        !           209: <h3>MKCOL Requests</h3>
        !           210: 
        !           211: <p>MKCOL requests are used to create Collections. The resource indicated by
        !           212: the Request-URI (parameters HTAnchor *dst or char *absolute/relative) MUST
        !           213: not exist, but all the resource's ancestros MUST exist.</p>
        !           214: <pre>extern BOOL HTMKCOLAnchor (HTRequest * request, HTAnchor * dst,
        !           215:                          HTDAVHeaders * headers);
        !           216: extern BOOL HTMKCOLAbsolute (HTRequest * request, const char * uri,
        !           217:                          HTDAVHeaders * headers);
        !           218: extern BOOL HTMKCOLRelative (HTRequest * request, const char * relative,
        !           219:                          HTParentAnchor * base, HTDAVHeaders * headers);</pre>
        !           220: 
        !           221: <h3>COPY Requests</h3>
        !           222: 
        !           223: <p>COPY requests copies the Request-URI (parameters HTAnchor *src or char
        !           224: *absolute/relative) to the resource indicated in Destinarion header. The
        !           225: HTDAVHeaders *headers parameter MUST be a non-null object and it MUST have
        !           226: the Destination header set. Other headers may also be used, like Depth (0 or
        !           227: infinity), If and Overwrite headers.</p>
        !           228: <pre>extern BOOL HTCOPYAnchor (HTRequest * request, HTAnchor * src,
        !           229:                         const char * xmlbody, HTDAVHeaders * headers);
        !           230: extern BOOL HTCOPYDocumentAnchor (HTRequest * request, HTAnchor * src,
        !           231:                         HTParentAnchor * xmlbody, HTDAVHeaders * headers);
        !           232: extern BOOL HTCOPYAbsolute (HTRequest * request, const char * uri,
        !           233:                         const char * xmlbody, HTDAVHeaders * headers);
        !           234: extern BOOL HTCOPYRelative (HTRequest * request, const char * relative,
        !           235:                         HTParentAnchor * base, const char * xmlbody,
        !           236:                         HTDAVHeaders * headers);</pre>
        !           237: 
        !           238: <h3>MOVE Requests</h3>
        !           239: 
        !           240: <p>MOVE requests moves the Request-URI (parameters HTAnchor *src or char
        !           241: *absolute/relative) to the resource indicated in Destinarion header. The
        !           242: HTDAVHeaders *headers parameter MUST be a non-null object and it MUST have
        !           243: the Destination header set. Other headers may also be used, like Depth ("0"
        !           244: or "infinity" - if the resource is a Collection, Depth must only be
        !           245: "infinity"), If and Overwrite headers.</p>
        !           246: <pre>extern BOOL HTMOVEAnchor (HTRequest * request, HTAnchor * src,
        !           247:                         const char * xmlbody, HTDAVHeaders * headers);
        !           248: extern BOOL HTMOVEDocumentAnchor (HTRequest * request, HTAnchor * src,
        !           249:                         HTParentAnchor * xmlbody, HTDAVHeaders * headers);
        !           250: extern BOOL HTMOVEAbsolute (HTRequest * request, const char * uri,
        !           251:                         const char * xmlbody, HTDAVHeaders * headers);
        !           252: extern BOOL HTMOVERelative (HTRequest * request, const char * relative,
        !           253:                         HTParentAnchor * base, const char * xmlbody,
        !           254:                         HTDAVHeaders * headers);
        !           255: 
        !           256: #endif /* HT_DAV */
        !           257: #endif /* HTDAV_H */</pre>
        !           258: 
        !           259: <p></p>
        !           260: <hr />
        !           261: <address>
        !           262:   $Id$
        !           263: </address>
        !           264: 
        !           265: <p></p>
        !           266: 
        !           267: <p></p>
        !           268: </body>
        !           269: </html>

Webmaster