00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <iostream>
00028 #include <mpcl/net/cgi/cookie.hh>
00029
00030
00031
00032
00033
00034
00035 void mpcl::net::cgi::TCookie::
00036 read (std::basic_istream<char_type, traits_type>& rtSOURCE_ISTREAM)
00037 {
00038
00039 char cTmpChar;
00040
00041 yName = "";
00042 yValue = "";
00043
00044
00045
00046
00047 while ( ( (cTmpChar = rtSOURCE_ISTREAM.get()) == ' ' ) && rtSOURCE_ISTREAM.good() );
00048
00049
00050
00051
00052 if ( cTmpChar != EOF )
00053 {
00054 do
00055 {
00056 yName += cTmpChar;
00057 }
00058 while ( ( (cTmpChar = rtSOURCE_ISTREAM.get()) != '=' ) && rtSOURCE_ISTREAM.good() );
00059
00060
00061
00062
00063 while ( ( (cTmpChar = rtSOURCE_ISTREAM.get()) != ';' ) &&
00064 ( cTmpChar != '\n' ) &&
00065 rtSOURCE_ISTREAM.good() )
00066 {
00067 yValue += cTmpChar;
00068 }
00069 }
00070
00071 }
00072
00073
00074 void mpcl::net::cgi::TCookie::
00075 write (std::basic_ostream<char_type, traits_type>& rtTARGET_OSTREAM) const
00076 {
00077
00078 using std::endl;
00079
00080
00081
00082
00083 rtTARGET_OSTREAM << "Set-Cookie: " << yName << "=" << yValue;
00084
00085
00086
00087
00088 if ( !tExpires.empty() )
00089 {
00090 rtTARGET_OSTREAM << "; expires=" << tExpires.get ("%a, %d-%b-%Y %H:%M:%S GMT");
00091 }
00092 if ( !yPath.empty() )
00093 {
00094 rtTARGET_OSTREAM << "; path=" << yPath;
00095 }
00096 if ( !yDomain.empty() )
00097 {
00098 rtTARGET_OSTREAM << "; domain=" << yDomain;
00099 }
00100 if ( gSecure )
00101 {
00102 rtTARGET_OSTREAM << "; secure";
00103 }
00104 rtTARGET_OSTREAM << endl;
00105
00106 }