2011-04-09 21:34:04 +04:00
|
|
|
/*
|
|
|
|
This file is part of the PhantomJS project from Ofi Labs.
|
|
|
|
|
|
|
|
Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer in the
|
|
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
* Neither the name of the <organization> nor the
|
|
|
|
names of its contributors may be used to endorse or promote products
|
|
|
|
derived from this software without specific prior written permission.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
|
|
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
|
|
|
|
2011-04-08 20:55:10 +04:00
|
|
|
#include <QDebug>
|
|
|
|
#include <QNetworkRequest>
|
2011-04-08 22:28:39 +04:00
|
|
|
#include <QList>
|
|
|
|
#include <QNetworkReply>
|
2011-04-12 18:21:09 +04:00
|
|
|
#include <QDesktopServices>
|
|
|
|
#include <QNetworkDiskCache>
|
2011-04-08 20:55:10 +04:00
|
|
|
|
|
|
|
#include "networkaccessmanager.h"
|
|
|
|
|
|
|
|
// public:
|
2011-04-12 18:21:09 +04:00
|
|
|
NetworkAccessManager::NetworkAccessManager(QObject *parent, bool diskCacheEnabled)
|
|
|
|
: QNetworkAccessManager(parent), m_networkDiskCache(0)
|
2011-04-08 20:55:10 +04:00
|
|
|
{
|
2011-04-12 18:21:09 +04:00
|
|
|
if (diskCacheEnabled) {
|
|
|
|
m_networkDiskCache = new QNetworkDiskCache();
|
|
|
|
m_networkDiskCache->setCacheDirectory(QDesktopServices::storageLocation(QDesktopServices::CacheLocation));
|
|
|
|
setCache(m_networkDiskCache);
|
|
|
|
}
|
2011-04-08 22:28:39 +04:00
|
|
|
connect(this, SIGNAL(finished(QNetworkReply*)), SLOT(handleFinished(QNetworkReply*)));
|
2011-04-08 20:55:10 +04:00
|
|
|
}
|
|
|
|
|
2011-04-12 18:21:09 +04:00
|
|
|
NetworkAccessManager::~NetworkAccessManager()
|
|
|
|
{
|
|
|
|
if (m_networkDiskCache)
|
|
|
|
delete m_networkDiskCache;
|
|
|
|
}
|
|
|
|
|
2011-04-08 20:55:10 +04:00
|
|
|
// protected:
|
|
|
|
QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData)
|
|
|
|
{
|
|
|
|
switch(op) {
|
|
|
|
case QNetworkAccessManager::HeadOperation: {
|
2011-04-08 22:28:39 +04:00
|
|
|
qDebug() << "HTTP/1.1 HEAD Request";
|
2011-04-08 20:55:10 +04:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case QNetworkAccessManager::GetOperation: {
|
2011-04-08 22:28:39 +04:00
|
|
|
qDebug() << "HTTP/1.1 GET Request";
|
2011-04-08 20:55:10 +04:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case QNetworkAccessManager::PutOperation: {
|
2011-04-08 22:28:39 +04:00
|
|
|
qDebug() << "HTTP/1.1 PUT Request";
|
2011-04-08 20:55:10 +04:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case QNetworkAccessManager::PostOperation: {
|
2011-04-08 22:28:39 +04:00
|
|
|
qDebug() << "HTTP/1.1 POST Request";
|
2011-04-08 20:55:10 +04:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case QNetworkAccessManager::DeleteOperation: {
|
2011-04-08 22:28:39 +04:00
|
|
|
qDebug() << "HTTP/1.1 DELETE Request";
|
2011-04-08 20:55:10 +04:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case QNetworkAccessManager::CustomOperation: {
|
2011-04-08 22:28:39 +04:00
|
|
|
qDebug() << "HTTP/1.1 CUSTOM Request";
|
2011-04-08 20:55:10 +04:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
default: {
|
|
|
|
qWarning() << "Unexpected HTTP Operation Type";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2011-04-13 05:37:29 +04:00
|
|
|
qDebug() << "URL" << qPrintable(req.url().toString());
|
2011-04-08 20:55:10 +04:00
|
|
|
|
|
|
|
// Pass duty to the superclass - Nothing special to do here (yet?)
|
|
|
|
return QNetworkAccessManager::createRequest(op, req, outgoingData);
|
|
|
|
}
|
2011-04-08 22:28:39 +04:00
|
|
|
|
|
|
|
// private slots:
|
|
|
|
void NetworkAccessManager::handleFinished(QNetworkReply *reply)
|
|
|
|
{
|
|
|
|
qDebug() << "HTTP/1.1 Response";
|
|
|
|
QList<QNetworkReply::RawHeaderPair> headerPairs = reply->rawHeaderPairs();
|
|
|
|
foreach ( QNetworkReply::RawHeaderPair pair, headerPairs ) {
|
|
|
|
qDebug() << pair.first << "=" << pair.second;
|
|
|
|
}
|
|
|
|
}
|