/* */ #ifndef _D_COOKIE_STORAGE_H_ #define _D_COOKIE_STORAGE_H_ #include "common.h" #include #include #include "a2time.h" #include "Cookie.h" #include "CookieParser.h" namespace aria2 { class Logger; class CookieStorage { private: std::deque _cookies; CookieParser _parser; Logger* _logger; void storeCookies(const std::deque& cookies); public: CookieStorage(); ~CookieStorage(); // Returns true if cookie is stored or updated existing cookie. // Returns false if cookie is expired. bool store(const Cookie& cookie); // Returns true if cookie is stored or updated existing cookie. // Otherwise, returns false. bool parseAndStore(const std::string& setCookieString, const std::string& requestHost, const std::string& requestPath); std::deque criteriaFind(const std::string& requestHost, const std::string& requestPath, time_t date, bool secure) const; // Loads Cookies from file denoted by filename. If compiled with // libsqlite3, this method automatically detects the specified file // is sqlite3 or just plain text file and calls appropriate parser // implementation class. If Cookies are successfully loaded, this // method returns true. Otherwise, this method returns false. bool load(const std::string& filename); // Saves Cookies in Netspace format which is used in // Firefox1.2/Netscape/Mozilla. If Cookies are successfully saved, // this method returns true, otherwise returns false. bool saveNsFormat(const std::string& filename); size_t size() const; std::deque::const_iterator begin() const { return _cookies.begin(); } std::deque::const_iterator end() const { return _cookies.end(); } }; } // namespace aria2 #endif // _D_COOKIE_STORAGE_H_