45939109b4
Integrated the classes in the Network Kit (libbnetapi.so). Only the foundation classed BUrl, BUrlContext, BNetworkCookie, BNetworkCookieJar and the private HttpTime code is currently compiled. The BUrlProtocol currently contains some misplaced BUrlProtocolHttp specific stuff, and the HTTP stuff itself has a dependency on libcrypto and should live in an add-on instead. I've sprinkled some TODOs in the code, and I've done some renaming compared to the last version of the GSoC patch. Any help to bring this further along is appreciated. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39161 a95241bf-73f2-0310-859d-f6bbb57e9c96
127 lines
3.8 KiB
C++
127 lines
3.8 KiB
C++
/*
|
|
* Copyright 2010 Haiku Inc. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _B_NETWORK_COOKIE_H_
|
|
#define _B_NETWORK_COOKIE_H_
|
|
|
|
|
|
#include <Archivable.h>
|
|
#include <DateTime.h>
|
|
#include <Message.h>
|
|
#include <String.h>
|
|
#include <Url.h>
|
|
|
|
|
|
class BNetworkCookie : public BArchivable {
|
|
public:
|
|
BNetworkCookie(const char* name,
|
|
const char* value);
|
|
BNetworkCookie(const BNetworkCookie& other);
|
|
BNetworkCookie(const BString& cookieString);
|
|
BNetworkCookie(const BString& cookieString,
|
|
const BUrl& url);
|
|
BNetworkCookie(BMessage* archive);
|
|
BNetworkCookie();
|
|
virtual ~BNetworkCookie();
|
|
|
|
// Parse a "SetCookie" string, or "name=value"
|
|
|
|
BNetworkCookie& ParseCookieStringFromUrl(const BString& string,
|
|
const BUrl& url);
|
|
BNetworkCookie& ParseCookieString(const BString& cookieString);
|
|
|
|
// Modify the cookie fields
|
|
BNetworkCookie& SetComment(const BString& comment);
|
|
BNetworkCookie& SetCommentUrl(const BString& commentUrl);
|
|
BNetworkCookie& SetDiscard(bool discard);
|
|
BNetworkCookie& SetDomain(const BString& domain);
|
|
BNetworkCookie& SetMaxAge(int32 maxAge);
|
|
BNetworkCookie& SetExpirationDate(time_t expireDate);
|
|
BNetworkCookie& SetExpirationDate(BDateTime& expireDate);
|
|
BNetworkCookie& SetPath(const BString& path);
|
|
BNetworkCookie& SetSecure(bool secure);
|
|
BNetworkCookie& SetVersion(int8 version);
|
|
BNetworkCookie& SetName(const BString& name);
|
|
BNetworkCookie& SetValue(const BString& value);
|
|
|
|
// Access the cookie fields
|
|
const BString& CommentUrl() const;
|
|
const BString& Comment() const;
|
|
bool Discard() const;
|
|
const BString& Domain() const;
|
|
int32 MaxAge() const;
|
|
time_t ExpirationDate() const;
|
|
const BString& ExpirationString() const;
|
|
const BString& Path() const;
|
|
bool Secure() const;
|
|
int8 Version() const;
|
|
const BString& Name() const;
|
|
const BString& Value() const;
|
|
const BString& RawCookie(bool full) const;
|
|
bool IsSessionCookie() const;
|
|
bool IsValid(bool strict = false) const;
|
|
bool IsValidForUrl(const BUrl& url) const;
|
|
bool IsValidForDomain(const BString& domain) const;
|
|
bool IsValidForPath(const BString& path) const;
|
|
|
|
// Test if cookie fields are defined
|
|
bool HasCommentUrl() const;
|
|
bool HasComment() const;
|
|
bool HasDiscard() const;
|
|
bool HasDomain() const;
|
|
bool HasMaxAge() const;
|
|
bool HasExpirationDate() const;
|
|
bool HasPath() const;
|
|
bool HasVersion() const;
|
|
bool HasName() const;
|
|
bool HasValue() const;
|
|
|
|
// Test if cookie could be deleted
|
|
bool ShouldDeleteAtExit() const;
|
|
bool ShouldDeleteNow() const;
|
|
|
|
// BArchivable members
|
|
virtual status_t Archive(BMessage* into,
|
|
bool deep = true) const;
|
|
static BArchivable* Instantiate(BMessage* archive);
|
|
|
|
// Overloaded operators
|
|
BNetworkCookie& operator=(const BNetworkCookie& other);
|
|
BNetworkCookie& operator=(const char* string);
|
|
bool operator==(const BNetworkCookie& other);
|
|
bool operator!=(const BNetworkCookie& other);
|
|
private:
|
|
void _Reset();
|
|
void _ExtractNameValuePair(
|
|
const BString& cookieString, int16* index,
|
|
bool parseField = false);
|
|
|
|
private:
|
|
mutable BString fRawCookie;
|
|
mutable bool fRawCookieValid;
|
|
mutable BString fRawFullCookie;
|
|
mutable bool fRawFullCookieValid;
|
|
|
|
BString fComment;
|
|
BString fCommentUrl;
|
|
bool fDiscard;
|
|
BString fDomain;
|
|
BDateTime fExpiration;
|
|
mutable BString fExpirationString;
|
|
mutable bool fExpirationStringValid;
|
|
BString fPath;
|
|
bool fSecure;
|
|
int8 fVersion;
|
|
BString fName;
|
|
BString fValue;
|
|
|
|
bool fHasDiscard;
|
|
bool fHasExpirationDate;
|
|
bool fSessionCookie;
|
|
bool fHasVersion;
|
|
};
|
|
|
|
#endif // _B_NETWORK_COOKIE_H_
|
|
|