#include "cookiejar.h" #include #include #include #include CookieJar::CookieJar(QObject *parent) : QNetworkCookieJar(parent) { } void CookieJar::setFilePath(const QString &path) { m_path = path; } QString CookieJar::filePath() const { return m_path; } bool CookieJar::load() { if (m_path.isEmpty()) return false; QFile f(m_path); if (!f.open(QIODevice::ReadOnly)) return false; const QByteArray data = f.readAll(); f.close(); const QList cookies = QNetworkCookie::parseCookies(data); if (cookies.isEmpty()) return false; setAllCookies(cookies); return true; } bool CookieJar::save() const { if (m_path.isEmpty()) return false; const QFileInfo info(m_path); QDir().mkpath(info.absolutePath()); QFile f(m_path); if (!f.open(QIODevice::WriteOnly | QIODevice::Truncate)) return false; // Permessi solo proprietario PRIMA di scrivere il contenuto. f.setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner); const QList cookies = allCookies(); for (int i = 0; i < cookies.size(); ++i) { f.write(cookies.at(i).toRawForm(QNetworkCookie::Full)); f.write("\n"); } f.close(); return true; } void CookieJar::clear() { setAllCookies(QList()); if (!m_path.isEmpty()) QFile::remove(m_path); } bool CookieJar::setCookiesFromUrl(const QList &cookieList, const QUrl &url) { const bool changed = QNetworkCookieJar::setCookiesFromUrl(cookieList, url); if (changed) save(); return changed; }