FacebookLoginBrowser to use cookies, re-writing NetworkCookieJar
[situare] / src / network / networkcookiejar.cpp
index 6cdce85..d1ccaea 100644 (file)
@@ -3,6 +3,7 @@
     Copyright (C) 2010  Ixonos Plc. Authors:
 
         Henri Lampela - henri.lampela@ixonos.com
+        Sami Rämö - sami.ramo@ixonos.com
 
     Situare is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
     USA.
 */
 
-#include "networkcookiejar.h"
 #include <QDebug>
+#include <QSettings>
 
-NetworkCookieJar::NetworkCookieJar(QObject *parent) :
-    QNetworkCookieJar(parent)
-{
-    m_cookieList.clear();
-}
+#include "common.h"
+
+#include "networkcookiejar.h"
 
-void NetworkCookieJar::setAllCookies(const QList<QNetworkCookie> &cookieList)
+NetworkCookieJar::NetworkCookieJar(QObject *parent)
+    : QNetworkCookieJar(parent)
 {
-    m_cookieList = cookieList;
+    qWarning() << __PRETTY_FUNCTION__;
+
+    loadCookies();
 }
 
-QList<QNetworkCookie> NetworkCookieJar::allCookies() const
+NetworkCookieJar::~NetworkCookieJar()
 {
-    return m_cookieList;
+    qWarning() << __PRETTY_FUNCTION__;
+
+    saveCookies();
 }
 
-bool NetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
+void NetworkCookieJar::loadCookies()
 {
-    Q_UNUSED(url);
+    qWarning() << __PRETTY_FUNCTION__;
 
-    QList<QNetworkCookie> cookies = allCookies();
-    foreach(QNetworkCookie cookie, cookieList) {
-        cookies += cookie;
-        //qDebug() << cookie.toRawForm(QNetworkCookie::Full);
-    }
-    setAllCookies(cookies);
+    QSettings settings(DIRECTORY_NAME, FILE_NAME);
 
-    return true;
+    QStringList list = settings.value(COOKIES, EMPTY).toStringList();
+
+    if(!list.isEmpty()) {
+        QList<QNetworkCookie> cookieList;
+        for(int i = 0; i < list.count(); i++) {
+            cookieList.append(QNetworkCookie::parseCookies(list.at(i).toAscii()));
+        }
+
+        setAllCookies(cookieList);
+    }
 }
 
-QList<QNetworkCookie> NetworkCookieJar::cookiesForUrl ( const QUrl & url ) const
+void NetworkCookieJar::saveCookies()
 {
-    Q_UNUSED(url);
-    return m_cookieList;
+    qWarning() << __PRETTY_FUNCTION__;
+
+    QList<QNetworkCookie> cookieList = allCookies();
+    QStringList list;
+
+    for(int i = 0; i < cookieList.count(); i++) {
+        QNetworkCookie cookie = cookieList.at(i);
+        QByteArray byteArray = cookie.toRawForm(QNetworkCookie::Full);
+        list.append(QString(byteArray));
+    }
+    list.removeDuplicates();
+
+    QSettings settings(DIRECTORY_NAME, FILE_NAME);
+    settings.setValue(COOKIES, list);
 }