/* */ #include "CookieBoxFactory.h" #include "CookieParser.h" #include "CookieBox.h" #include "Util.h" #include "RecoverableException.h" #include "LogFactory.h" #include "Logger.h" #include "NsCookieParser.h" #ifdef HAVE_SQLITE3 # include "Sqlite3MozCookieParser.h" #endif // HAVE_SQLITE3 #include #include namespace aria2 { CookieBoxFactory::CookieBoxFactory():_logger(LogFactory::getInstance()) {} CookieBoxFactory::~CookieBoxFactory() {} CookieBoxHandle CookieBoxFactory::createNewInstance() { CookieBoxHandle box(new CookieBox()); box->add(defaultCookies); return box; } void CookieBoxFactory::loadDefaultCookie(const std::string& filename) { char header[16]; // "SQLite format 3" plus \0 { std::ifstream s(filename.c_str()); s.get(header, sizeof(header)); if(s.bad()) { _logger->error("Failed to read header of cookie file %s", filename.c_str()); return; } } try { if(std::string(header) == "SQLite format 3") { #ifdef HAVE_SQLITE3 defaultCookies = Sqlite3MozCookieParser().parse(filename); #else // !HAVE_SQLITE3 _logger->notice("Cannot read SQLite3 database because SQLite3 support is" " disabled by configuration."); #endif // !HAVE_SQLITE3 } else { defaultCookies = NsCookieParser().parse(filename); } } catch(RecoverableException& e) { _logger->error("Failed to load cookies from %s, cause: %s", filename.c_str(), e.what()); } } } // namespace aria2