/////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) // // See accompanying file COPYING.TXT file for licensing details. // /////////////////////////////////////////////////////////////////////////////// #ifndef CPPCMS_HTTP_COOKIE_H #define CPPCMS_HTTP_COOKIE_H #include #include #include #include #include namespace cppcms { namespace http { class cookie; std::ostream CPPCMS_API &operator<<(std::ostream &,cookie const &); /// /// \brief Class that represents single HTTP Cookie /// Generally used in context of http::request and http::response /// class CPPCMS_API cookie { public: /// /// Cookie's Name /// std::string name() const; /// /// Cookie's value /// std::string value() const; /// /// Cookie's path /// std::string path() const; /// /// Cookie's domain /// std::string domain() const; /// /// Cookie's comment /// std::string comment() const; /// /// Check if the cookie is transferred over secure connection only /// bool secure() const; /// /// Set cookie's name /// void name(std::string n); /// /// Set cookie's value /// void value(std::string v); /// /// Set cookie's path /// void path(std::string p); /// /// Set cookie's domain /// void domain(std::string); /// /// Set cookie's comment /// void comment(std::string); /// /// Set expiration date/time /// void expires(time_t when); /// /// Returns expires timestamp for the cookie, if not set returns 0 /// /// \ver{v1_2} time_t expires() const; /// /// returns true if expires(time_t when) was called and expiration was set, /// if browser_age() is called it is reset to false /// /// \ver{v1_2} bool expires_defined() const; /// /// Set max cookie's age /// void max_age(unsigned age); /// /// Get max cookie's age, returns 0 if not set /// /// \ver{v1_2} unsigned max_age() const; /// /// returns true if max(unsigned age) was called and max_age was set, /// if browser_age() is called it is reset to false /// /// \ver{v1_2} bool max_age_defined() const; /// /// Set age according to browser's session (i.e. no Max-Age) /// void browser_age(); /// /// Set secure property on the cookies /// void secure(bool v); /// /// Check if cookie is not assigned - empty /// bool empty() const; cookie(); ~cookie(); cookie(cookie const &); cookie const &operator=(cookie const &); /// /// Create cookie with name and value, age - browser, rest properties undefined. /// cookie(std::string name,std::string value); /// /// Create cookies with name, value and max-age, rest properties undefined. /// cookie(std::string name,std::string value,unsigned age); /// /// Create cookie with name, value, max-age, path, domain and command /// cookie(std::string name,std::string value,unsigned age,std::string path,std::string domain = std::string(),std::string comment=std::string()); /// /// Create cookie with name, value, path, domain and comment, age - browser. cookie(std::string name,std::string value,std::string path,std::string domain=std::string(),std::string comment=std::string()); private: friend std::ostream &operator<<(std::ostream &,cookie const &); void write(std::ostream &) const; // for future use struct _data; booster::copy_ptr<_data> d; // real members std::string name_; std::string value_; std::string path_; std::string domain_; std::string comment_; unsigned max_age_; uint32_t secure_ : 1; uint32_t has_age_ : 1; uint32_t has_expiration_: 1; CPPCMS_UNUSED_MEMBER uint32_t reserved_ : 29; }; } } //::cppcms::http #endif