restcgi::cookies Class Reference

List of all members.

Detailed Description

Collection of cookies.

This is a multimap (name is key) of cookies that is used for both requests and responses. For requests the insert(const std::string&) method is called automatically by general_hdr, for responses the application must call insert to create a cookie.

When inserting (for response) there is a constraint that the cookie ids must be unique. The general_hdr "Set-Cookie" field is automatically updated with each insert.

Follows RFC2109 standard, but parses Netscape as well (see insert).

See also:
cookie, general_hdr


Public Types

typedef std::multimap< std::string,
cookie
multimap_type
 multimap type
typedef multimap_type::const_iterator const_iterator
 iterator

Public Member Functions

 cookies (bool is_request)
 Construct.
bool empty () const
 Test if empty.
void clear ()
const_iterator find (const std::string &name) const
 Find start of cookies with given name, returning end() if none.
bool insert (const cookie &c)
 Insert cookie, returning whether the id is new/cookie inserted.
bool insert (const std::string &v)
std::ostream & operator<< (std::ostream &os) const
 Stream out in HTTP header format.
const_iterator begin () const
 Get multimap beginning.
const_iterator end () const
 Get multimap end.
void attach (observer *o)
 Attach observer (must outlive this).
void detach (observer *o)
 Detach observer.

Static Public Attributes

static const char SEPARATOR_CSTR [3]
 separator cstr (", ")

Classes

struct  observer
 Cookies observer interface. More...


Member Function Documentation

void restcgi::cookies::clear (  ) 

Clear all cookies.

bool restcgi::cookies::insert ( const std::string &  v  ) 

Parse the "Cookie" header string into individual cookies and insert into collection. RFC2109 syntax almost supports Netscape. This uses a modified syntax to allow Netscape by not requiring a cookie-version and not forcing VALUE to be quoted-text. Note that the cookies are always inserted, if found, whether the whole string completely parses or not, which is the returned indication.

RFC2109 modified syntax:

            cookies      = [cookie-ver ";"] cookie-value *((";" | ",") cookie-value)
            cookie-value = NAME "=" VALUE [";" path] [";" domain]
            cookie-ver   = "$Version" "=" value
            NAME         = attr
            VALUE        = <value or up to ";" or ",">
            path         = "$Path" "=" value
            domain       = "$Domain" "=" value
            


Generated on Fri May 15 11:27:12 2009 for restcgi by  doxygen 1.4.7