Annotation of libwww/Library/src/HTCookie.html, revision 2.1
2.1 ! frystyk 1: <HTML>
! 2: <HEAD>
! 3: <TITLE>W3C Sample Code Library libwww Simple Cookie Handler</TITLE>
! 4: </HEAD>
! 5: <BODY>
! 6: <H1>
! 7: Simple Cookie Handler
! 8: </H1>
! 9: <PRE>
! 10: /*
! 11: ** (c) COPYRIGHT MIT 1999.
! 12: ** Please first read the full copyright statement in the file COPYRIGH.
! 13: */
! 14: </PRE>
! 15: <P>
! 16: This module provides a simple
! 17: <A HREF="http://www.netscape.com/newsref/std/cookie_spec.html">HTTP Cookie
! 18: handling mechanism</A>. It really also is an excersize in showing how libwww
! 19: can be extended with something like cookies in a modular manner. An important
! 20: thing to note about this implementation is that it does <EM>not</EM> provide
! 21: storage for cookies - this is left to the application as normally cookies
! 22: have to be kept under lock.
! 23: <P>
! 24: This module is implemented by <A HREF="HTCookie.c">HTCookie.c</A>, and it
! 25: is a part of the <A HREF="http://www.w3.org/Library/"> W3C Sample Code
! 26: Library</A>.
! 27: <PRE>
! 28: #ifndef HTCOOKIE_H
! 29: #define HTCOOKIE_H
! 30: #include "WWWLib.h"
! 31: </PRE>
! 32: <H2>
! 33: <A NAME="Init">Initiate and Terminate Cookie Handling</A>
! 34: </H2>
! 35: <P>
! 36: In order to start handling cookies, you need to initiate the module. Likewise,
! 37: when you are done, you must terminate the module in order to clean up memory
! 38: etc. Note that this cookie handler doesn't provide storage room for cookies
! 39: - the application MUST do that by <A HREF="#Callbacks">registering cookie
! 40: callbacks</A>. Initiation does three things:
! 41: <OL>
! 42: <LI>
! 43: Register a <A HREF="HTHeader.html">MIME header parser</A> to parse the Set-Cookie
! 44: header field
! 45: <LI>
! 46: Register a <A HREF="HTNet.html">BEFORE filter</A> to see if a cookie should
! 47: be added to the request (uses the <A HREF="#Callbacks">"set" callback</A>)
! 48: <LI>
! 49: Register an <A HREF="HTNet.html">AFTER filter</A> to handle new cookies (uses
! 50: the <A HREF="#Callbacks">"find" callback</A>)
! 51: </OL>
! 52: <PRE>
! 53: extern BOOL HTCookie_init (void);
! 54: extern BOOL HTCookie_terminate (void);
! 55: </PRE>
! 56: <H2>
! 57: <A NAME="Cookie">The Cookie Class</A>
! 58: </H2>
! 59: <P>
! 60: The cookie class is used to handle cookies in libwww and to hand them off
! 61: to the application. The creation and deletion of cookie object is handled
! 62: by this cookie module - the application is handed a cookie and can access
! 63: the elements using the following methods:
! 64: <PRE>
! 65: typedef struct _HTCookie HTCookie;
! 66: </PRE>
! 67: <H3>
! 68: Cookie Name
! 69: </H3>
! 70: <PRE>
! 71: extern BOOL HTCookie_setName (HTCookie * me, const char * name);
! 72: extern char * HTCookie_name (HTCookie * me);
! 73: </PRE>
! 74: <H3>
! 75: Cookie Value
! 76: </H3>
! 77: <PRE>
! 78: extern BOOL HTCookie_setValue (HTCookie * me, const char * value);
! 79: extern char * HTCookie_value (HTCookie * me);
! 80: </PRE>
! 81: <H3>
! 82: Cookie Domain
! 83: </H3>
! 84: <PRE>
! 85: extern BOOL HTCookie_setDomain (HTCookie * me, const char * domain);
! 86: extern char * HTCookie_domain (HTCookie * me);
! 87: </PRE>
! 88: <H3>
! 89: Cookie Path
! 90: </H3>
! 91: <PRE>
! 92: extern BOOL HTCookie_setPath (HTCookie * me, const char * path);
! 93: extern char * HTCookie_path (HTCookie * me);
! 94: </PRE>
! 95: <H3>
! 96: Cookie Expiration
! 97: </H3>
! 98: <PRE>
! 99: extern time_t HTCookie_setExpiration (HTCookie * me, time_t expiration);
! 100: extern time_t HTCookie_expiration (HTCookie * me);
! 101: </PRE>
! 102: <H3>
! 103: Is Cookie Secure?
! 104: </H3>
! 105: <PRE>
! 106: extern time_t HTCookie_setSecure (HTCookie * me, BOOL secure);
! 107: extern BOOL HTCookie_isSecure (HTCookie * me);
! 108: </PRE>
! 109: <H2>
! 110: <A NAME="Callbacks">Cookie Callbacks</A>
! 111: </H2>
! 112: <P>
! 113: The cookie callbacks are called before the request is shipped over the wire
! 114: to see if any cookies should be included and after the response has been
! 115: recieved if a new cookie is found in a response and before. Cookie callbacks
! 116: can be registered with a context that is sent along with the callback when
! 117: called.
! 118: <PRE>
! 119: typedef BOOL HTCookieSetCallback (HTRequest * request, HTCookie * cookie, void * param);
! 120: typedef HTAssocList * HTCookieFindCallback (HTRequest * request, void * param);
! 121:
! 122: extern BOOL HTCookie_setCallbacks (HTCookieSetCallback * setCookie,
! 123: void * setCookieContext,
! 124: HTCookieFindCallback * findCookie,
! 125: void * findCookieContext);
! 126: extern BOOL HTCookie_deleteCallbacks (void);
! 127: </PRE>
! 128: <H2>
! 129: <A NAME="Mode">Cookie Handling Mode</A>
! 130: </H2>
! 131: <P>
! 132: The application can decide how cookies are to be handled - should they be
! 133: ignored, should the user be asked, etc.
! 134: <PRE>
! 135: typedef enum _HTCookieMode {
! 136: HT_COOKIE_TOSS = 0,
! 137: HT_COOKIE_PROMPT,
! 138: HT_COOKIE_ACCEPT_SAME_DOMAIN,
! 139: HT_COOKIE_ACCEPT_ALL
! 140: } HTCookieMode;
! 141:
! 142: extern BOOL HTCookie_setCookieMode (HTCookieMode mode);
! 143: </PRE>
! 144: <PRE>
! 145: #endif /* HTCOOKIE_H */
! 146: </PRE>
! 147: <P>
! 148: <HR>
! 149: <ADDRESS>
! 150: @(#) $Id: HTFilter.html,v 2.13 1999/02/03 16:35:11 frystyk Exp $
! 151: </ADDRESS>
! 152: </BODY></HTML>
Webmaster