From 2ebd21ceb8d57d713394a346476b3bfaa7146008 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Wed, 6 Jul 2011 14:42:29 +0200 Subject: [PATCH] First working version of the Web publication --- .../publishing/UBDocumentPublisher.cpp | 39 +++++++------------ src/adaptors/publishing/UBDocumentPublisher.h | 1 + 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/src/adaptors/publishing/UBDocumentPublisher.cpp b/src/adaptors/publishing/UBDocumentPublisher.cpp index d3bfafe3..412289c0 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.cpp +++ b/src/adaptors/publishing/UBDocumentPublisher.cpp @@ -56,7 +56,7 @@ UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *pa UBDocumentPublisher::~UBDocumentPublisher() { //delete mpWebView; - delete mPublishingDocument; + //delete mPublishingDocument; } @@ -574,6 +574,9 @@ void UBDocumentPublisher::init() mCrlf+=0x0a; mpNetworkMgr = new QNetworkAccessManager(this); + //mpCache = new QNetworkDiskCache(this); + //mpCache->setCacheDirectory("cache"); + //mpNetworkMgr->setCache(mpCache); mpCookieJar = new QNetworkCookieJar(); connect(mpNetworkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*))); @@ -581,11 +584,11 @@ void UBDocumentPublisher::init() void UBDocumentPublisher::onFinished(QNetworkReply *reply) { + qDebug() << "[-[ Request finished! ]-]"; QByteArray response = reply->readAll(); if (!bLoginCookieSet) { - QList cookiesList; QVariant cookieHeader = reply->rawHeader("Set-Cookie"); // First we concatenate all the Set-Cookie values (the packet can contains many of them) QStringList qslCookie = cookieHeader.toString().split("\n"); @@ -621,19 +624,19 @@ void UBDocumentPublisher::onFinished(QNetworkReply *reply) crntCookie.name() == "rememberme" || crntCookie.name() == "validation") { - cookiesList << crntCookie; + mCookies << crntCookie; } } QNetworkCookie langCookie("language", "en"); - cookiesList << langCookie; + mCookies << langCookie; // DEBUG : Verify - for(int i = 0; i < cookiesList.size(); i++) + for(int i = 0; i < mCookies.size(); i++) { - qDebug() << cookiesList.at(i).name() << "=" << cookiesList.at(i).value(); + qDebug() << mCookies.at(i).name() << "=" << mCookies.at(i).value(); } // Set the cookiejar : it set the cookies that will be sent with every packet. - mpCookieJar->setCookiesFromUrl(cookiesList, QUrl(DOCPUBLICATION_URL)/*reply->url()*/); + mpCookieJar->setCookiesFromUrl(mCookies, QUrl(DOCPUBLICATION_URL)/*reply->url()*/); mpNetworkMgr->setCookieJar(mpCookieJar); bLoginCookieSet = true; @@ -643,28 +646,20 @@ void UBDocumentPublisher::onFinished(QNetworkReply *reply) { if (!response.isEmpty()){ // Display the iframe - mpWebView->setHtml(response, QUrl(DOCPUBLICATION_URL)); + mpWebView->setHtml(response, reply->url()); UBApplication::applicationController->showSankoreWebDocument(); - } else { // Redirect QVariant locationHeader = reply->rawHeader("Location"); - - qDebug() << "---------------------------"; - QList clist = mpCookieJar->cookiesForUrl(QUrl(locationHeader.toString())); - for(int i = 0; i < clist.size(); i++) - { - qDebug() << clist.at(i).name() << "=" << clist.at(i).value(); - } - - QNetworkRequest req(QUrl(locationHeader.toString())); mpNetworkMgr->get(req); + qDebug() << mpWebView->url().toString(); } } + reply->deleteLater(); } void UBDocumentPublisher::sendUbw() @@ -689,12 +684,7 @@ void UBDocumentPublisher::sendUbw() datatoSend += ba; datatoSend += mCrlf; datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf); - //datatoSend += QString("%0").arg("Content-Disposition: form-data; name=\"submit\""); - //datatoSend += "Submit Query"; - //datatoSend += mCrlf; - //datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf); - // ?xpage=plain&outputSyntax=plain QNetworkRequest request(QUrl(DOCPUBLICATION_URL)); request.setHeader(QNetworkRequest::ContentTypeHeader, multipartHeader); request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size()); @@ -727,7 +717,8 @@ void UBDocumentPublisher::onLoadFinished(bool result) { Q_UNUSED(result); // [Basic Auth] This line says: if the user click on a link, do not interpret it. - mpWebView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); + //mpWebView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); + mpWebView->page()->setNetworkAccessManager(mpNetworkMgr); } diff --git a/src/adaptors/publishing/UBDocumentPublisher.h b/src/adaptors/publishing/UBDocumentPublisher.h index 0c4bcd6b..8b4c289c 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.h +++ b/src/adaptors/publishing/UBDocumentPublisher.h @@ -64,6 +64,7 @@ private: void buildUbwFile(); void login(QString username, QString password); QString mTmpZipFile; + QList mCookies; }; #endif // UBDOCUMENTPUBLISHER_H