xref: /aoo4110/main/svl/inc/svl/httpcook.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef SVTOOLS_HTTPCOOK_HXX
25*b1cdbd2cSJim Jagielski #define SVTOOLS_HTTPCOOK_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <tools/datetime.hxx>
28*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
29*b1cdbd2cSJim Jagielski #include <tools/string.hxx>
30*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx>
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski /*=======================================================================
33*b1cdbd2cSJim Jagielski  *
34*b1cdbd2cSJim Jagielski  *=====================================================================*/
35*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_FLAG_SECURE            0x01
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_POLICY_INTERACTIVE     0x00
38*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_POLICY_ACCEPTED        0x01
39*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_POLICY_BANNED          0x02
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_DOMAIN_POLICY          0x10
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_DOMAIN_ACCEPTED \
44*b1cdbd2cSJim Jagielski     (CNTHTTP_COOKIE_DOMAIN_POLICY | CNTHTTP_COOKIE_POLICY_ACCEPTED)
45*b1cdbd2cSJim Jagielski #define CNTHTTP_COOKIE_DOMAIN_BANNED \
46*b1cdbd2cSJim Jagielski     (CNTHTTP_COOKIE_DOMAIN_POLICY | CNTHTTP_COOKIE_POLICY_BANNED)
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski /*=======================================================================
49*b1cdbd2cSJim Jagielski  *
50*b1cdbd2cSJim Jagielski  * CntHTTPCookie.
51*b1cdbd2cSJim Jagielski  *
52*b1cdbd2cSJim Jagielski  *=====================================================================*/
53*b1cdbd2cSJim Jagielski struct CntHTTPCookie
54*b1cdbd2cSJim Jagielski {
55*b1cdbd2cSJim Jagielski 	String   m_aName;
56*b1cdbd2cSJim Jagielski 	String   m_aValue;
57*b1cdbd2cSJim Jagielski 	String   m_aDomain;
58*b1cdbd2cSJim Jagielski 	String   m_aPath;
59*b1cdbd2cSJim Jagielski 	DateTime m_aExpires;
60*b1cdbd2cSJim Jagielski 	sal_uInt16   m_nFlags;
61*b1cdbd2cSJim Jagielski 	sal_uInt16   m_nPolicy;
62*b1cdbd2cSJim Jagielski 
CntHTTPCookieCntHTTPCookie63*b1cdbd2cSJim Jagielski 	CntHTTPCookie (void)
64*b1cdbd2cSJim Jagielski 		: m_aExpires (Date(0), Time(0)),
65*b1cdbd2cSJim Jagielski 		  m_nFlags   (0),
66*b1cdbd2cSJim Jagielski 		  m_nPolicy  (CNTHTTP_COOKIE_POLICY_INTERACTIVE)
67*b1cdbd2cSJim Jagielski 	{}
68*b1cdbd2cSJim Jagielski 
replacesCntHTTPCookie69*b1cdbd2cSJim Jagielski 	sal_Bool replaces (const CntHTTPCookie& rOther) const
70*b1cdbd2cSJim Jagielski 	{
71*b1cdbd2cSJim Jagielski 		return ((m_aDomain == rOther.m_aDomain) &&
72*b1cdbd2cSJim Jagielski 				(m_aPath   == rOther.m_aPath  ) &&
73*b1cdbd2cSJim Jagielski 				(m_aName   == rOther.m_aName  )    );
74*b1cdbd2cSJim Jagielski 	}
75*b1cdbd2cSJim Jagielski 
operator ==CntHTTPCookie76*b1cdbd2cSJim Jagielski 	sal_Bool operator== (const CntHTTPCookie& rOther) const
77*b1cdbd2cSJim Jagielski 	{
78*b1cdbd2cSJim Jagielski 		return ((m_aName    == rOther.m_aName   ) &&
79*b1cdbd2cSJim Jagielski 				(m_aValue   == rOther.m_aValue  ) &&
80*b1cdbd2cSJim Jagielski 				(m_aDomain  == rOther.m_aDomain ) &&
81*b1cdbd2cSJim Jagielski 				(m_aPath    == rOther.m_aPath   ) &&
82*b1cdbd2cSJim Jagielski 				(m_aExpires == rOther.m_aExpires) &&
83*b1cdbd2cSJim Jagielski 				(m_nFlags   == rOther.m_nFlags  ) &&
84*b1cdbd2cSJim Jagielski 				(m_nPolicy  == rOther.m_nPolicy )    );
85*b1cdbd2cSJim Jagielski 	}
86*b1cdbd2cSJim Jagielski 
writeCntHTTPCookie87*b1cdbd2cSJim Jagielski 	void write (SvStream& rStrm) const
88*b1cdbd2cSJim Jagielski 	{
89*b1cdbd2cSJim Jagielski 		SfxPoolItem::writeUnicodeString(rStrm, m_aName);
90*b1cdbd2cSJim Jagielski 		SfxPoolItem::writeUnicodeString(rStrm, m_aValue);
91*b1cdbd2cSJim Jagielski 		SfxPoolItem::writeUnicodeString(rStrm, m_aDomain);
92*b1cdbd2cSJim Jagielski 		SfxPoolItem::writeUnicodeString(rStrm, m_aPath);
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 		rStrm << m_aExpires.GetDate();
95*b1cdbd2cSJim Jagielski 		rStrm << m_aExpires.GetTime();
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski 		rStrm << m_nFlags;
98*b1cdbd2cSJim Jagielski 		rStrm << m_nPolicy;
99*b1cdbd2cSJim Jagielski 	}
100*b1cdbd2cSJim Jagielski 
readCntHTTPCookie101*b1cdbd2cSJim Jagielski 	void read (SvStream& rStrm, bool bUnicode)
102*b1cdbd2cSJim Jagielski 	{
103*b1cdbd2cSJim Jagielski 		SfxPoolItem::readUnicodeString(rStrm, m_aName, bUnicode);
104*b1cdbd2cSJim Jagielski 		SfxPoolItem::readUnicodeString(rStrm, m_aValue, bUnicode);
105*b1cdbd2cSJim Jagielski 		SfxPoolItem::readUnicodeString(rStrm, m_aDomain, bUnicode);
106*b1cdbd2cSJim Jagielski 		SfxPoolItem::readUnicodeString(rStrm, m_aPath, bUnicode);
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski 		sal_uInt32 nValue = 0;
109*b1cdbd2cSJim Jagielski 		rStrm >> nValue;
110*b1cdbd2cSJim Jagielski 		m_aExpires.SetDate (nValue);
111*b1cdbd2cSJim Jagielski 		rStrm >> nValue;
112*b1cdbd2cSJim Jagielski 		m_aExpires.SetTime (nValue);
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 		rStrm >> m_nFlags;
115*b1cdbd2cSJim Jagielski 		rStrm >> m_nPolicy;
116*b1cdbd2cSJim Jagielski 	}
117*b1cdbd2cSJim Jagielski };
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski /*=======================================================================
120*b1cdbd2cSJim Jagielski  *
121*b1cdbd2cSJim Jagielski  * CntHTTPCookieRequest.
122*b1cdbd2cSJim Jagielski  *
123*b1cdbd2cSJim Jagielski  *=====================================================================*/
124*b1cdbd2cSJim Jagielski enum CntHTTPCookieRequestType
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski 	CNTHTTP_COOKIE_REQUEST_RECV = 0,
127*b1cdbd2cSJim Jagielski 	CNTHTTP_COOKIE_REQUEST_SEND
128*b1cdbd2cSJim Jagielski };
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski struct CntHTTPCookieRequest
131*b1cdbd2cSJim Jagielski {
132*b1cdbd2cSJim Jagielski 	const String& 			 m_rURL;
133*b1cdbd2cSJim Jagielski 	List&         			 m_rCookieList;
134*b1cdbd2cSJim Jagielski 	CntHTTPCookieRequestType m_eType;
135*b1cdbd2cSJim Jagielski 	sal_uInt16					 m_nRet;
136*b1cdbd2cSJim Jagielski 
CntHTTPCookieRequestCntHTTPCookieRequest137*b1cdbd2cSJim Jagielski 	CntHTTPCookieRequest (
138*b1cdbd2cSJim Jagielski 		const String& rURL,
139*b1cdbd2cSJim Jagielski 		List& rCookieList,
140*b1cdbd2cSJim Jagielski 		CntHTTPCookieRequestType eType)
141*b1cdbd2cSJim Jagielski 		: m_rURL (rURL),
142*b1cdbd2cSJim Jagielski 		  m_rCookieList (rCookieList),
143*b1cdbd2cSJim Jagielski 		  m_eType(eType),
144*b1cdbd2cSJim Jagielski 		  m_nRet (CNTHTTP_COOKIE_POLICY_BANNED) {}
145*b1cdbd2cSJim Jagielski };
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski #endif // SVTOOLS_HTTPCOOK_HXX
148*b1cdbd2cSJim Jagielski 
149