#ifndef __DCL_HTTP_HEADER_H__ #define __DCL_HTTP_HEADER_H__ 20050509 #ifndef __DCL_INCLUDED_TIME_H #include <dcl/core/_time.h> #endif #ifndef __DCL_STRING_H__ #include <dcl/core/String.h> #endif #ifndef __DCL_COLLECTION_BASE_H__ #include <dcl/core/CollectionBase.h> #endif #ifdef __DCL_DEBUG static const char* __pszHttpHeader_h__ = "dcl/net/HttpHeader.h"; #undef __THIS_FILE__ #define __THIS_FILE__ __pszHttpHeader_h__ #endif __DCL_BEGIN_NAMESPACE class DCLNAPI HttpHeader { protected: String m_strName; String m_strContent; public: HttpHeader(); HttpHeader(const HttpHeader& src); HttpHeader(const char* pszName, const char* pszContent = NULL); const String& name() const; const String& content() const; String toString() const; }; class DCLNAPI HttpSetCookie : public HttpHeader { public: // http://www.faqs.org/rfcs/rfc2109.html #ifdef RFC2109 HttpSetCookie(const char* pszName, const char* pszValue = NULL, const char* pszComment = NULL, const char* pszDomain = NULL, int nMaxAge = 0, // 초 단위 const char* pszPath = NULL, bool bSecure = false, int nVersion = 0 ); #endif // RFC2109 // php style HttpSetCookie(const char* pszName, const char* pszValue = NULL, time_t timeExpires = 0, const char* pszPath = NULL, const char* pszDomain = NULL, bool bSecure = false ); }; // http://www.faqs.org/rfcs/rfc2965.html class DCLNAPI HttpSetCookie2 : public HttpHeader { }; class DCLNAPI HttpExpires : public HttpHeader { public: HttpExpires(time_t timeExpires); }; inline HttpHeader::HttpHeader() { } inline HttpHeader::HttpHeader(const HttpHeader& src) { m_strName = src.m_strName; m_strContent = src.m_strContent; } inline HttpHeader::HttpHeader(const char* pszName, const char* pszContent /* = NULL */) { __DCL_ASSERT(pszName != NULL); __DCL_ASSERT(*pszName != '\0'); m_strName = pszName; if (pszContent != NULL) m_strContent = pszContent; } inline const String& HttpHeader::name() const { return m_strName; } inline const String& HttpHeader::content() const { return m_strContent; } inline bool operator == (const HttpHeader& x, const HttpHeader& y) { return (x.name() == y.name()) && (x.content() == y.content()); } __DCL_END_NAMESPACE #ifdef __DCL_DEBUG #undef __THIS_FILE__ #define __THIS_FILE__ __FILE__ #endif #endif // __DCL_HTTP_HEADER_H__