/usr/include/Poco/Net/HTTPCookie.h is in libpoco-dev 1.8.0.1-1ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | //
// HTTPCookie.h
//
// Library: Net
// Package: HTTP
// Module: HTTPCookie
//
// Definition of the HTTPCookie class.
//
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef Net_HTTPCookie_INCLUDED
#define Net_HTTPCookie_INCLUDED
#include "Poco/Net/Net.h"
namespace Poco {
namespace Net {
class NameValueCollection;
class Net_API HTTPCookie
/// This class represents a HTTP Cookie.
///
/// A cookie is a small amount of information sent by a Web
/// server to a Web browser, saved by the browser, and later sent back
/// to the server. A cookie's value can uniquely identify a client, so
/// cookies are commonly used for session management.
///
/// A cookie has a name, a single value, and optional attributes such
/// as a comment, path and domain qualifiers, a maximum age, and a
/// version number.
///
/// This class supports both the Version 0 (by Netscape) and Version 1
/// (by RFC 2109) cookie specifications. By default, cookies are created
/// using Version 0 to ensure the best interoperability.
{
public:
HTTPCookie();
/// Creates an empty HTTPCookie.
explicit HTTPCookie(const std::string& name);
/// Creates a cookie with the given name.
/// The cookie never expires.
explicit HTTPCookie(const NameValueCollection& nvc);
/// Creates a cookie from the given NameValueCollection.
HTTPCookie(const std::string& name, const std::string& value);
/// Creates a cookie with the given name and value.
/// The cookie never expires.
///
/// Note: If value contains whitespace or non-alphanumeric
/// characters, the value should be escaped by calling escape()
/// before passing it to the constructor.
HTTPCookie(const HTTPCookie& cookie);
/// Creates the HTTPCookie by copying another one.
~HTTPCookie();
/// Destroys the HTTPCookie.
HTTPCookie& operator = (const HTTPCookie& cookie);
/// Assigns a cookie.
void setVersion(int version);
/// Sets the version of the cookie.
///
/// Version must be either 0 (denoting a Netscape cookie)
/// or 1 (denoting a RFC 2109 cookie).
int getVersion() const;
/// Returns the version of the cookie, which is
/// either 0 or 1.
void setName(const std::string& name);
/// Sets the name of the cookie.
const std::string& getName() const;
/// Returns the name of the cookie.
void setValue(const std::string& value);
/// Sets the value of the cookie.
///
/// According to the cookie specification, the
/// size of the value should not exceed 4 Kbytes.
///
/// Note: If value contains whitespace or non-alphanumeric
/// characters, the value should be escaped by calling escape()
/// prior to passing it to setName().
const std::string& getValue() const;
/// Returns the value of the cookie.
void setComment(const std::string& comment);
/// Sets the comment for the cookie.
///
/// Comments are only supported for version 1 cookies.
const std::string& getComment() const;
/// Returns the comment for the cookie.
void setDomain(const std::string& domain);
/// Sets the domain for the cookie.
const std::string& getDomain() const;
/// Returns the domain for the cookie.
void setPath(const std::string& path);
/// Sets the path for the cookie.
void setPriority(const std::string& priority);
/// Sets the priority for the cookie.
const std::string& getPath() const;
/// Returns the path for the cookie.
const std::string& getPriority() const;
/// Returns the priority for the cookie.
void setSecure(bool secure);
/// Sets the value of the secure flag for
/// the cookie.
bool getSecure() const;
/// Returns the value of the secure flag
/// for the cookie.
void setMaxAge(int maxAge);
/// Sets the maximum age in seconds for
/// the cookie.
///
/// A value of -1 (default) causes the cookie
/// to become a session cookie, which will
/// be deleted when the browser window
/// is closed.
///
/// A value of 0 deletes the cookie on
/// the client.
int getMaxAge() const;
/// Returns the maximum age in seconds for
/// the cookie.
void setHttpOnly(bool flag = true);
/// Sets the HttpOnly flag for the cookie.
bool getHttpOnly() const;
/// Returns true iff the cookie's HttpOnly flag is set.
std::string toString() const;
/// Returns a string representation of the cookie,
/// suitable for use in a Set-Cookie header.
static std::string escape(const std::string& str);
/// Escapes the given string by replacing all
/// non-alphanumeric characters with escape
/// sequences in the form %xx, where xx is the
/// hexadecimal character code.
///
/// The following characters will be replaced
/// with escape sequences:
/// - percent sign %
/// - less-than and greater-than < and >
/// - curly brackets { and }
/// - square brackets [ and ]
/// - parenthesis ( and )
/// - solidus /
/// - vertical line |
/// - reverse solidus (backslash /)
/// - quotation mark "
/// - apostrophe '
/// - circumflex accent ^
/// - grave accent `
/// - comma and semicolon , and ;
/// - whitespace and control characters
static std::string unescape(const std::string& str);
/// Unescapes the given string by replacing all
/// escape sequences in the form %xx with the
/// respective characters.
private:
int _version;
std::string _name;
std::string _value;
std::string _comment;
std::string _domain;
std::string _path;
std::string _priority;
bool _secure;
int _maxAge;
bool _httpOnly;
};
//
// inlines
//
inline int HTTPCookie::getVersion() const
{
return _version;
}
inline const std::string& HTTPCookie::getName() const
{
return _name;
}
inline const std::string& HTTPCookie::getValue() const
{
return _value;
}
inline const std::string& HTTPCookie::getComment() const
{
return _comment;
}
inline const std::string& HTTPCookie::getDomain() const
{
return _domain;
}
inline const std::string& HTTPCookie::getPath() const
{
return _path;
}
inline const std::string& HTTPCookie::getPriority() const
{
return _priority;
}
inline bool HTTPCookie::getSecure() const
{
return _secure;
}
inline int HTTPCookie::getMaxAge() const
{
return _maxAge;
}
inline bool HTTPCookie::getHttpOnly() const
{
return _httpOnly;
}
} } // namespace Poco::Net
#endif // Net_HTTPCookie_INCLUDED
|