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