Annotation of libwww/Library/src/HTMethod.html, revision 2.17

2.17    ! kirschpi    1: <html>
        !             2: <head>
        !             3:   <meta http-equiv="Content-Type" content="text/html">
2.14      frystyk     4:   <!-- Changed by: Henrik Frystyk Nielsen,  1-Jul-1996 -->
2.17    ! kirschpi    5:   <title>W3C Sample Code Library libwww Request Access Methods</title>
        !             6: </head>
        !             7: 
        !             8: <body>
        !             9: <h1>Request Access Methods</h1>
        !            10: <pre>/*
2.1       frystyk    11: **     (c) COPYRIGHT MIT 1995.
                     12: **     Please first read the full copyright statement in the file COPYRIGH.
2.17    ! kirschpi   13: */</pre>
        !            14: 
        !            15: <p>This module keeps a list of valid methods to be performed on a <a
        !            16: href="HTReq.html">request object</a>, for example <b>GET</b>, <b>HEAD</b>,
        !            17: <b>PUT</b>, <b>POST</b>, <b>DELETE</b>, etc. You can assign which method to
        !            18: be performed on the request object <a href="HTReq.html">directly</a> or you
        !            19: can go through the <a href="HTReq.html">Access module</a> for higher level
        !            20: functions.</p>
        !            21: 
        !            22: <p>This module is implemented by <a href="HTMethod.c">HTMethod.c</a>, and it
        !            23: is a part of the <a href="http://www.w3.org/Library/"> W3C Sample Code
        !            24: Library</a>.</p>
        !            25: <pre>#ifndef HTMETHOD_H
        !            26: #define HTMETHOD_H</pre>
        !            27: 
        !            28: <p><b>NOTE:</b> The anchor list of allowed methods is a bitflag, not at
        !            29: list!</p>
        !            30: <pre>typedef enum {
2.1       frystyk    31:     METHOD_INVALID     = 0x0,
                     32:     METHOD_GET         = 0x1,
                     33:     METHOD_HEAD                = 0x2,    
                     34:     METHOD_POST                = 0x4,    
2.13      frystyk    35:     METHOD_PUT         = 0x8,
                     36:     METHOD_PATCH       = 0x10,
                     37:     METHOD_DELETE      = 0x20,
                     38:     METHOD_TRACE       = 0x40,
                     39:     METHOD_OPTIONS     = 0x80,
                     40:     METHOD_LINK                = 0x100,
2.17    ! kirschpi   41: 
        !            42: #ifdef HT_DAV
        !            43:     METHOD_LOCK         = 0x400,              /* WebDAV Methods */
        !            44:     METHOD_UNLOCK       = 0x800,
        !            45: 
        !            46:     METHOD_PROPFIND     = 0x1000,
        !            47:     METHOD_PROPPATCH    = 0x2000,
        !            48:     METHOD_MKCOL        = 0x4000,
        !            49:     METHOD_COPY         = 0x8000,
        !            50:     METHOD_MOVE         = 0x10000,
        !            51: #endif
        !            52: 
        !            53: #ifdef HT_EXT
        !            54:     METHOD_EXT_0        = 0x20000,            /* Extension methods */
        !            55:     METHOD_EXT_1        = 0x40000,    
        !            56:     METHOD_EXT_2        = 0x80000,
        !            57:     METHOD_EXT_3        = 0x100000,
        !            58:     METHOD_EXT_4        = 0x200000,
        !            59:     METHOD_EXT_5        = 0x400000,
        !            60:     METHOD_EXT_6        = 0x800000,
        !            61: #endif
        !            62:    
2.13      frystyk    63:     METHOD_UNLINK      = 0x200
2.17    ! kirschpi   64: 
        !            65: } HTMethod;</pre>
        !            66: 
        !            67: <h3>Get Method Enumeration</h3>
        !            68: 
        !            69: <p>Gives the enumeration value of the method as a function of the (char *)
        !            70: name.</p>
        !            71: <pre>extern HTMethod HTMethod_enum (const char * name);</pre>
        !            72: 
        !            73: <h3>Get Method String</h3>
        !            74: 
        !            75: <p>The reverse of <i>HTMethod_enum()</i></p>
        !            76: <pre>extern const char * HTMethod_name (HTMethod method);</pre>
        !            77: 
        !            78: <h3>Is Method "Safe"?</h3>
        !            79: 
        !            80: <p>If a method is safe, it doesn't produce any side effects on the server</p>
        !            81: <pre>#define HTMethod_isSafe(me)        ((me) &amp; (METHOD_GET|METHOD_HEAD))</pre>
        !            82: 
        !            83: <h3>Does the Method Replace or Add to Metainformation</h3>
        !            84: 
        !            85: <p>Most methods override the current set of metainformation stored in an <a
        !            86: href="HTAnchor.html">anchor</a>. However, a few methods actually only add to
        !            87: the anchor metainformation. We have a small macro to make the distinction.</p>
        !            88: <pre>#define HTMethod_addMeta(me)  ((me) &amp; (METHOD_TRACE | METHOD_OPTIONS))</pre>
        !            89: 
        !            90: <h3>Does a Method include Entity?</h3>
        !            91: 
        !            92: <p>Does a method include an entity to be sent from the client to the
        !            93: server?</p>
        !            94: 
        !            95: <p>If not using WebDAV functions, neither extension methods, the
        !            96: HTMethod_hasEntity is not changed, because a macro is much more performant
        !            97: than a function. The function is interesting only when using WebDAV (many
        !            98: methods) or extension methods (in this case, a dynamic structure is
        !            99: needed).</p>
        !           100: <pre>
        !           101: #if !defined(HT_DAV) &amp;&amp; !defined(HT_EXT)
2.7       frystyk   102: #define HTMethod_hasEntity(me) ((me) &amp; (METHOD_PUT | METHOD_POST))
2.17    ! kirschpi  103: #else
        !           104: extern BOOL HTMethod_hasEntity(HTMethod me);
        !           105: #endif</pre>
        !           106: 
        !           107: <h3>Extension Methods</h3>
        !           108: 
        !           109: <p>These methods have been introduced in Libwww for extension purposes.
        !           110: Through these methods, application may register new methods, even libwww
        !           111: unknown methods, and use them. It's recomended for applications that need
        !           112: only a few new methods, that aren't yet in the libwww. The application should
        !           113: register the desired methos, an before finish, it must unregister these
        !           114: methods.</p>
        !           115: <pre>#ifdef HT_EXT
        !           116: extern BOOL HTMethod_setExtensionMethod (HTMethod method, const char * name, BOOL hasEntity);
        !           117: extern BOOL HTMethod_deleteExtensionMethod (HTMethod method);
        !           118: #endif</pre>
        !           119: 
        !           120: <p></p>
        !           121: <pre>#endif /* HTMETHOD_H */</pre>
        !           122: 
        !           123: <p></p>
        !           124: <hr>
        !           125: <address>
        !           126:   @(#) $Id: HTMethod.html,v 2.16 1998/05/14 02:10:45 frystyk Exp $
        !           127: </address>
        !           128: </body>
        !           129: </html>

Webmaster