[Pkg-owncloud-commits] [owncloud-client] 180/498: AbstractNetworkJob: move to its own file
Sandro Knauß
hefee-guest at moszumanska.debian.org
Tue Aug 11 14:48:48 UTC 2015
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit dd5ddf21667dd5690e633834d76509a89cfc1e22
Author: Olivier Goffart <ogoffart at woboq.com>
Date: Wed Jun 17 17:29:11 2015 +0200
AbstractNetworkJob: move to its own file
---
src/libsync/CMakeLists.txt | 1 +
src/libsync/abstractnetworkjob.cpp | 284 +++++++++++++++++++++++++++++++++++++
src/libsync/abstractnetworkjob.h | 129 +++++++++++++++++
src/libsync/networkjobs.cpp | 245 --------------------------------
src/libsync/networkjobs.h | 105 +-------------
5 files changed, 415 insertions(+), 349 deletions(-)
diff --git a/src/libsync/CMakeLists.txt b/src/libsync/CMakeLists.txt
index cbf11f0..a596c26 100644
--- a/src/libsync/CMakeLists.txt
+++ b/src/libsync/CMakeLists.txt
@@ -43,6 +43,7 @@ set(libsync_SRCS
logger.cpp
accessmanager.cpp
configfile.cpp
+ abstractnetworkjob.cpp
networkjobs.cpp
owncloudpropagator.cpp
owncloudtheme.cpp
diff --git a/src/libsync/abstractnetworkjob.cpp b/src/libsync/abstractnetworkjob.cpp
new file mode 100644
index 0000000..d085c6f
--- /dev/null
+++ b/src/libsync/abstractnetworkjob.cpp
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) by Klaas Freitag <freitag at owncloud.com>
+ * Copyright (C) by Daniel Molkentin <danimo at owncloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include <QNetworkRequest>
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
+#include <QNetworkRequest>
+#include <QSslConfiguration>
+#include <QBuffer>
+#include <QXmlStreamReader>
+#include <QStringList>
+#include <QStack>
+#include <QTimer>
+#include <QMutex>
+#include <QDebug>
+#include <QCoreApplication>
+
+#include "json.h"
+
+#include "networkjobs.h"
+#include "account.h"
+#include "owncloudpropagator.h"
+
+#include "creds/abstractcredentials.h"
+
+Q_DECLARE_METATYPE(QTimer*)
+
+namespace OCC {
+
+
+AbstractNetworkJob::AbstractNetworkJob(AccountPtr account, const QString &path, QObject *parent)
+ : QObject(parent)
+ , _timedout(false)
+ , _followRedirects(false)
+ , _ignoreCredentialFailure(false)
+ , _reply(0)
+ , _account(account)
+ , _path(path)
+ , _redirectCount(0)
+{
+ _timer.setSingleShot(true);
+ _timer.setInterval(OwncloudPropagator::httpTimeout() * 1000); // default to 5 minutes.
+ connect(&_timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
+
+ connect(this, SIGNAL(networkActivity()), SLOT(resetTimeout()));
+
+ // Network activity on the propagator jobs (GET/PUT) keeps all requests alive.
+ // This is a workaround for OC instances which only support one
+ // parallel up and download
+ if (_account) {
+ connect(_account.data(), SIGNAL(propagatorNetworkActivity()), SLOT(resetTimeout()));
+ }
+}
+
+void AbstractNetworkJob::setReply(QNetworkReply *reply)
+{
+ if (reply)
+ reply->setProperty("doNotHandleAuth", true);
+
+ QNetworkReply *old = _reply;
+ _reply = reply;
+ delete old;
+}
+
+void AbstractNetworkJob::setTimeout(qint64 msec)
+{
+ qDebug() << Q_FUNC_INFO << msec;
+
+ _timer.start(msec);
+}
+
+void AbstractNetworkJob::resetTimeout()
+{
+ qint64 interval = _timer.interval();
+ _timer.stop();
+ _timer.start(interval);
+}
+
+void AbstractNetworkJob::setIgnoreCredentialFailure(bool ignore)
+{
+ _ignoreCredentialFailure = ignore;
+}
+
+void AbstractNetworkJob::setPath(const QString &path)
+{
+ _path = path;
+}
+
+void AbstractNetworkJob::setupConnections(QNetworkReply *reply)
+{
+ connect(reply, SIGNAL(finished()), SLOT(slotFinished()));
+#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
+ connect(reply, SIGNAL(encrypted()), SIGNAL(networkActivity()));
+#endif
+ connect(reply->manager(), SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), SIGNAL(networkActivity()));
+ connect(reply, SIGNAL(sslErrors(QList<QSslError>)), SIGNAL(networkActivity()));
+ connect(reply, SIGNAL(metaDataChanged()), SIGNAL(networkActivity()));
+ connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SIGNAL(networkActivity()));
+ connect(reply, SIGNAL(uploadProgress(qint64,qint64)), SIGNAL(networkActivity()));
+}
+
+QNetworkReply* AbstractNetworkJob::addTimer(QNetworkReply *reply)
+{
+ reply->setProperty("timer", QVariant::fromValue(&_timer));
+ return reply;
+}
+
+QNetworkReply* AbstractNetworkJob::davRequest(const QByteArray &verb, const QString &relPath,
+ QNetworkRequest req, QIODevice *data)
+{
+ return addTimer(_account->davRequest(verb, relPath, req, data));
+}
+
+QNetworkReply *AbstractNetworkJob::davRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data)
+{
+ return addTimer(_account->davRequest(verb, url, req, data));
+}
+
+QNetworkReply* AbstractNetworkJob::getRequest(const QString &relPath)
+{
+ return addTimer(_account->getRequest(relPath));
+}
+
+QNetworkReply *AbstractNetworkJob::getRequest(const QUrl &url)
+{
+ return addTimer(_account->getRequest(url));
+}
+
+QNetworkReply *AbstractNetworkJob::headRequest(const QString &relPath)
+{
+ return addTimer(_account->headRequest(relPath));
+}
+
+QNetworkReply *AbstractNetworkJob::headRequest(const QUrl &url)
+{
+ return addTimer(_account->headRequest(url));
+}
+
+void AbstractNetworkJob::slotFinished()
+{
+ _timer.stop();
+
+ if( _reply->error() == QNetworkReply::SslHandshakeFailedError ) {
+ qDebug() << "SslHandshakeFailedError: " << reply()->errorString() << " : can be caused by a webserver wanting SSL client certificates";
+ }
+
+ if( _reply->error() != QNetworkReply::NoError ) {
+ qDebug() << Q_FUNC_INFO << _reply->error() << _reply->errorString();
+ if (_reply->error() == QNetworkReply::ProxyAuthenticationRequiredError) {
+ qDebug() << Q_FUNC_INFO << _reply->rawHeader("Proxy-Authenticate");
+ }
+ emit networkError(_reply);
+ }
+
+ // get the Date timestamp from reply
+ _responseTimestamp = _reply->rawHeader("Date");
+ _duration = _durationTimer.elapsed();
+
+ if (_followRedirects) {
+ // ### the qWarnings here should be exported via displayErrors() so they
+ // ### can be presented to the user if the job executor has a GUI
+ QUrl requestedUrl = reply()->request().url();
+ QUrl redirectUrl = reply()->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
+ if (!redirectUrl.isEmpty()) {
+ _redirectCount++;
+ if (requestedUrl.scheme() == QLatin1String("https") &&
+ redirectUrl.scheme() == QLatin1String("http")) {
+ qWarning() << this << "HTTPS->HTTP downgrade detected!";
+ } else if (requestedUrl == redirectUrl || _redirectCount >= maxRedirects()) {
+ qWarning() << this << "Redirect loop detected!";
+ } else {
+ resetTimeout();
+ setReply(getRequest(redirectUrl));
+ setupConnections(reply());
+ return;
+ }
+ }
+ }
+
+ AbstractCredentials *creds = _account->credentials();
+ if (!creds->stillValid(_reply) && ! _ignoreCredentialFailure) {
+ _account->handleInvalidCredentials();
+ }
+
+ bool discard = finished();
+ if (discard) {
+ deleteLater();
+ }
+}
+
+quint64 AbstractNetworkJob::duration()
+{
+ return _duration;
+}
+
+QByteArray AbstractNetworkJob::responseTimestamp()
+{
+ return _responseTimestamp;
+}
+
+AbstractNetworkJob::~AbstractNetworkJob()
+{
+ setReply(0);
+}
+
+void AbstractNetworkJob::start()
+{
+ _timer.start();
+ _durationTimer.start();
+ _duration = 0;
+
+ const QUrl url = account()->url();
+ const QString displayUrl = QString( "%1://%2%3").arg(url.scheme()).arg(url.host()).arg(url.path());
+
+ qDebug() << "!!!" << metaObject()->className() << "created for" << displayUrl << "+" << path();
+}
+
+void AbstractNetworkJob::slotTimeout()
+{
+ _timedout = true;
+ qDebug() << this << "Timeout";
+ if (reply()) {
+ reply()->abort();
+ } else {
+ qDebug() << "reply was NULL";
+ }
+}
+
+
+NetworkJobTimeoutPauser::NetworkJobTimeoutPauser(QNetworkReply *reply)
+{
+ _timer = reply->property("timer").value<QTimer*>();
+ if(!_timer.isNull()) {
+ _timer->stop();
+ }
+}
+
+NetworkJobTimeoutPauser::~NetworkJobTimeoutPauser()
+{
+ if(!_timer.isNull()) {
+ _timer->start();
+ }
+}
+
+QString extractErrorMessage(const QByteArray& errorResponse)
+{
+ QXmlStreamReader reader(errorResponse);
+ reader.readNextStartElement();
+ if (reader.name() != "error") {
+ return QString::null;
+ }
+
+ while (!reader.atEnd() && reader.error() == QXmlStreamReader::NoError) {
+ reader.readNextStartElement();
+ if (reader.name() == QLatin1String("message")) {
+ return reader.readElementText();
+ }
+ }
+ return QString::null;
+}
+
+QString errorMessage(const QString& baseError, const QByteArray& body)
+{
+ QString msg = baseError;
+ QString extra = extractErrorMessage(body);
+ if (!extra.isEmpty()) {
+ msg += QString::fromLatin1(" (%1)").arg(extra);
+ }
+ return msg;
+}
+
+} // namespace OCC
diff --git a/src/libsync/abstractnetworkjob.h b/src/libsync/abstractnetworkjob.h
new file mode 100644
index 0000000..c9f11c1
--- /dev/null
+++ b/src/libsync/abstractnetworkjob.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) by Klaas Freitag <freitag at owncloud.com>
+ * Copyright (C) by Daniel Molkentin <danimo at owncloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#pragma once
+
+#include "owncloudlib.h"
+#include <QObject>
+#include <QNetworkRequest>
+#include <QNetworkReply>
+#include <QPointer>
+#include <QElapsedTimer>
+#include <QDateTime>
+#include <QTimer>
+#include "accountfwd.h"
+
+class QUrl;
+
+namespace OCC {
+
+class AbstractSslErrorHandler;
+
+/**
+ * @brief The AbstractNetworkJob class
+ */
+class OWNCLOUDSYNC_EXPORT AbstractNetworkJob : public QObject {
+ Q_OBJECT
+public:
+ explicit AbstractNetworkJob(AccountPtr account, const QString &path, QObject* parent = 0);
+ virtual ~AbstractNetworkJob();
+
+ virtual void start();
+
+ AccountPtr account() const { return _account; }
+
+ void setPath(const QString &path);
+ QString path() const { return _path; }
+
+ void setReply(QNetworkReply *reply);
+ QNetworkReply* reply() const { return _reply; }
+
+ void setIgnoreCredentialFailure(bool ignore);
+ bool ignoreCredentialFailure() const { return _ignoreCredentialFailure; }
+
+ QByteArray responseTimestamp();
+ quint64 duration();
+
+public slots:
+ void setTimeout(qint64 msec);
+ void resetTimeout();
+signals:
+ void networkError(QNetworkReply *reply);
+ void networkActivity();
+protected:
+ void setupConnections(QNetworkReply *reply);
+ QNetworkReply* davRequest(const QByteArray& verb, const QString &relPath,
+ QNetworkRequest req = QNetworkRequest(),
+ QIODevice *data = 0);
+ QNetworkReply* davRequest(const QByteArray& verb, const QUrl &url,
+ QNetworkRequest req = QNetworkRequest(),
+ QIODevice *data = 0);
+ QNetworkReply* getRequest(const QString &relPath);
+ QNetworkReply* getRequest(const QUrl &url);
+ QNetworkReply* headRequest(const QString &relPath);
+ QNetworkReply* headRequest(const QUrl &url);
+
+ int maxRedirects() const { return 10; }
+ virtual bool finished() = 0;
+ QByteArray _responseTimestamp;
+ QElapsedTimer _durationTimer;
+ quint64 _duration;
+ bool _timedout; // set to true when the timeout slot is recieved
+
+ // Automatically follows redirects. Note that this only works for
+ // GET requests that don't set up any HTTP body or other flags.
+ bool _followRedirects;
+
+private slots:
+ void slotFinished();
+ virtual void slotTimeout();
+
+private:
+ QNetworkReply* addTimer(QNetworkReply *reply);
+ bool _ignoreCredentialFailure;
+ QPointer<QNetworkReply> _reply; // (QPointer because the NetworkManager may be destroyed before the jobs at exit)
+ AccountPtr _account;
+ QString _path;
+ QTimer _timer;
+ int _redirectCount;
+};
+
+/**
+ * @brief Internal Helper class
+ */
+class NetworkJobTimeoutPauser {
+public:
+ NetworkJobTimeoutPauser(QNetworkReply *reply);
+ ~NetworkJobTimeoutPauser();
+private:
+ QPointer<QTimer> _timer;
+};
+
+
+/** Gets the SabreDAV-style error message from an error response.
+ *
+ * This assumes the response is XML with a 'error' tag that has a
+ * 'message' tag that contains the data to extract.
+ *
+ * Returns a null string if no message was found.
+ */
+QString OWNCLOUDSYNC_EXPORT extractErrorMessage(const QByteArray& errorResponse);
+
+/** Builds a error message based on the error and the reply body. */
+QString OWNCLOUDSYNC_EXPORT errorMessage(const QString& baseError, const QByteArray& body);
+
+} // namespace OCC
+
+
diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
index c2f2dab..4a670de 100644
--- a/src/libsync/networkjobs.cpp
+++ b/src/libsync/networkjobs.cpp
@@ -35,211 +35,8 @@
#include "creds/abstractcredentials.h"
-Q_DECLARE_METATYPE(QTimer*)
-
namespace OCC {
-
-AbstractNetworkJob::AbstractNetworkJob(AccountPtr account, const QString &path, QObject *parent)
- : QObject(parent)
- , _timedout(false)
- , _followRedirects(false)
- , _ignoreCredentialFailure(false)
- , _reply(0)
- , _account(account)
- , _path(path)
- , _redirectCount(0)
-{
- _timer.setSingleShot(true);
- _timer.setInterval(OwncloudPropagator::httpTimeout() * 1000); // default to 5 minutes.
- connect(&_timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
-
- connect(this, SIGNAL(networkActivity()), SLOT(resetTimeout()));
-
- // Network activity on the propagator jobs (GET/PUT) keeps all requests alive.
- // This is a workaround for OC instances which only support one
- // parallel up and download
- if (_account) {
- connect(_account.data(), SIGNAL(propagatorNetworkActivity()), SLOT(resetTimeout()));
- }
-}
-
-void AbstractNetworkJob::setReply(QNetworkReply *reply)
-{
- if (reply)
- reply->setProperty("doNotHandleAuth", true);
-
- QNetworkReply *old = _reply;
- _reply = reply;
- delete old;
-}
-
-void AbstractNetworkJob::setTimeout(qint64 msec)
-{
- qDebug() << Q_FUNC_INFO << msec;
-
- _timer.start(msec);
-}
-
-void AbstractNetworkJob::resetTimeout()
-{
- qint64 interval = _timer.interval();
- _timer.stop();
- _timer.start(interval);
-}
-
-void AbstractNetworkJob::setIgnoreCredentialFailure(bool ignore)
-{
- _ignoreCredentialFailure = ignore;
-}
-
-void AbstractNetworkJob::setPath(const QString &path)
-{
- _path = path;
-}
-
-void AbstractNetworkJob::setupConnections(QNetworkReply *reply)
-{
- connect(reply, SIGNAL(finished()), SLOT(slotFinished()));
-#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
- connect(reply, SIGNAL(encrypted()), SIGNAL(networkActivity()));
-#endif
- connect(reply->manager(), SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), SIGNAL(networkActivity()));
- connect(reply, SIGNAL(sslErrors(QList<QSslError>)), SIGNAL(networkActivity()));
- connect(reply, SIGNAL(metaDataChanged()), SIGNAL(networkActivity()));
- connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SIGNAL(networkActivity()));
- connect(reply, SIGNAL(uploadProgress(qint64,qint64)), SIGNAL(networkActivity()));
-}
-
-QNetworkReply* AbstractNetworkJob::addTimer(QNetworkReply *reply)
-{
- reply->setProperty("timer", QVariant::fromValue(&_timer));
- return reply;
-}
-
-QNetworkReply* AbstractNetworkJob::davRequest(const QByteArray &verb, const QString &relPath,
- QNetworkRequest req, QIODevice *data)
-{
- return addTimer(_account->davRequest(verb, relPath, req, data));
-}
-
-QNetworkReply *AbstractNetworkJob::davRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data)
-{
- return addTimer(_account->davRequest(verb, url, req, data));
-}
-
-QNetworkReply* AbstractNetworkJob::getRequest(const QString &relPath)
-{
- return addTimer(_account->getRequest(relPath));
-}
-
-QNetworkReply *AbstractNetworkJob::getRequest(const QUrl &url)
-{
- return addTimer(_account->getRequest(url));
-}
-
-QNetworkReply *AbstractNetworkJob::headRequest(const QString &relPath)
-{
- return addTimer(_account->headRequest(relPath));
-}
-
-QNetworkReply *AbstractNetworkJob::headRequest(const QUrl &url)
-{
- return addTimer(_account->headRequest(url));
-}
-
-void AbstractNetworkJob::slotFinished()
-{
- _timer.stop();
-
- if( _reply->error() == QNetworkReply::SslHandshakeFailedError ) {
- qDebug() << "SslHandshakeFailedError: " << reply()->errorString() << " : can be caused by a webserver wanting SSL client certificates";
- }
-
- if( _reply->error() != QNetworkReply::NoError ) {
- qDebug() << Q_FUNC_INFO << _reply->error() << _reply->errorString();
- if (_reply->error() == QNetworkReply::ProxyAuthenticationRequiredError) {
- qDebug() << Q_FUNC_INFO << _reply->rawHeader("Proxy-Authenticate");
- }
- emit networkError(_reply);
- }
-
- // get the Date timestamp from reply
- _responseTimestamp = _reply->rawHeader("Date");
- _duration = _durationTimer.elapsed();
-
- if (_followRedirects) {
- // ### the qWarnings here should be exported via displayErrors() so they
- // ### can be presented to the user if the job executor has a GUI
- QUrl requestedUrl = reply()->request().url();
- QUrl redirectUrl = reply()->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
- if (!redirectUrl.isEmpty()) {
- _redirectCount++;
- if (requestedUrl.scheme() == QLatin1String("https") &&
- redirectUrl.scheme() == QLatin1String("http")) {
- qWarning() << this << "HTTPS->HTTP downgrade detected!";
- } else if (requestedUrl == redirectUrl || _redirectCount >= maxRedirects()) {
- qWarning() << this << "Redirect loop detected!";
- } else {
- resetTimeout();
- setReply(getRequest(redirectUrl));
- setupConnections(reply());
- return;
- }
- }
- }
-
- AbstractCredentials *creds = _account->credentials();
- if (!creds->stillValid(_reply) && ! _ignoreCredentialFailure) {
- _account->handleInvalidCredentials();
- }
-
- bool discard = finished();
- if (discard) {
- deleteLater();
- }
-}
-
-quint64 AbstractNetworkJob::duration()
-{
- return _duration;
-}
-
-QByteArray AbstractNetworkJob::responseTimestamp()
-{
- return _responseTimestamp;
-}
-
-AbstractNetworkJob::~AbstractNetworkJob()
-{
- setReply(0);
-}
-
-void AbstractNetworkJob::start()
-{
- _timer.start();
- _durationTimer.start();
- _duration = 0;
-
- const QUrl url = account()->url();
- const QString displayUrl = QString( "%1://%2%3").arg(url.scheme()).arg(url.host()).arg(url.path());
-
- qDebug() << "!!!" << metaObject()->className() << "created for" << displayUrl << "+" << path();
-}
-
-void AbstractNetworkJob::slotTimeout()
-{
- _timedout = true;
- qDebug() << this << "Timeout";
- if (reply()) {
- reply()->abort();
- } else {
- qDebug() << "reply was NULL";
- }
-}
-
-/*********************************************************************************************/
-
RequestEtagJob::RequestEtagJob(AccountPtr account, const QString &path, QObject *parent)
: AbstractNetworkJob(account, path, parent)
{
@@ -806,21 +603,6 @@ bool CheckQuotaJob::finished()
return true;
}
-NetworkJobTimeoutPauser::NetworkJobTimeoutPauser(QNetworkReply *reply)
-{
- _timer = reply->property("timer").value<QTimer*>();
- if(!_timer.isNull()) {
- _timer->stop();
- }
-}
-
-NetworkJobTimeoutPauser::~NetworkJobTimeoutPauser()
-{
- if(!_timer.isNull()) {
- _timer->start();
- }
-}
-
JsonApiJob::JsonApiJob(const AccountPtr &account, const QString& path, QObject* parent): AbstractNetworkJob(account, path, parent)
{ }
@@ -857,31 +639,4 @@ bool JsonApiJob::finished()
return true;
}
-QString extractErrorMessage(const QByteArray& errorResponse)
-{
- QXmlStreamReader reader(errorResponse);
- reader.readNextStartElement();
- if (reader.name() != "error") {
- return QString::null;
- }
-
- while (!reader.atEnd() && reader.error() == QXmlStreamReader::NoError) {
- reader.readNextStartElement();
- if (reader.name() == QLatin1String("message")) {
- return reader.readElementText();
- }
- }
- return QString::null;
-}
-
-QString errorMessage(const QString& baseError, const QByteArray& body)
-{
- QString msg = baseError;
- QString extra = extractErrorMessage(body);
- if (!extra.isEmpty()) {
- msg += QString::fromLatin1(" (%1)").arg(extra);
- }
- return msg;
-}
-
} // namespace OCC
diff --git a/src/libsync/networkjobs.h b/src/libsync/networkjobs.h
index 4f16994..c0c8ca7 100644
--- a/src/libsync/networkjobs.h
+++ b/src/libsync/networkjobs.h
@@ -16,103 +16,12 @@
#ifndef NETWORKJOBS_H
#define NETWORKJOBS_H
-#include "owncloudlib.h"
-#include <QObject>
-#include <QNetworkRequest>
-#include <QNetworkReply>
-#include <QPointer>
-#include <QElapsedTimer>
-#include <QDateTime>
-#include <QTimer>
-#include "accountfwd.h"
+#include "abstractnetworkjob.h"
class QUrl;
namespace OCC {
-class AbstractSslErrorHandler;
-
-
-/**
- * @brief Internal Helper class
- */
-class NetworkJobTimeoutPauser {
-public:
- NetworkJobTimeoutPauser(QNetworkReply *reply);
- ~NetworkJobTimeoutPauser();
-private:
- QPointer<QTimer> _timer;
-};
-
-/**
- * @brief The AbstractNetworkJob class
- */
-class OWNCLOUDSYNC_EXPORT AbstractNetworkJob : public QObject {
- Q_OBJECT
-public:
- explicit AbstractNetworkJob(AccountPtr account, const QString &path, QObject* parent = 0);
- virtual ~AbstractNetworkJob();
-
- virtual void start();
-
- AccountPtr account() const { return _account; }
-
- void setPath(const QString &path);
- QString path() const { return _path; }
-
- void setReply(QNetworkReply *reply);
- QNetworkReply* reply() const { return _reply; }
-
- void setIgnoreCredentialFailure(bool ignore);
- bool ignoreCredentialFailure() const { return _ignoreCredentialFailure; }
-
- QByteArray responseTimestamp();
- quint64 duration();
-
-public slots:
- void setTimeout(qint64 msec);
- void resetTimeout();
-signals:
- void networkError(QNetworkReply *reply);
- void networkActivity();
-protected:
- void setupConnections(QNetworkReply *reply);
- QNetworkReply* davRequest(const QByteArray& verb, const QString &relPath,
- QNetworkRequest req = QNetworkRequest(),
- QIODevice *data = 0);
- QNetworkReply* davRequest(const QByteArray& verb, const QUrl &url,
- QNetworkRequest req = QNetworkRequest(),
- QIODevice *data = 0);
- QNetworkReply* getRequest(const QString &relPath);
- QNetworkReply* getRequest(const QUrl &url);
- QNetworkReply* headRequest(const QString &relPath);
- QNetworkReply* headRequest(const QUrl &url);
-
- int maxRedirects() const { return 10; }
- virtual bool finished() = 0;
- QByteArray _responseTimestamp;
- QElapsedTimer _durationTimer;
- quint64 _duration;
- bool _timedout; // set to true when the timeout slot is recieved
-
- // Automatically follows redirects. Note that this only works for
- // GET requests that don't set up any HTTP body or other flags.
- bool _followRedirects;
-
-private slots:
- void slotFinished();
- virtual void slotTimeout();
-
-private:
- QNetworkReply* addTimer(QNetworkReply *reply);
- bool _ignoreCredentialFailure;
- QPointer<QNetworkReply> _reply; // (QPointer because the NetworkManager may be destroyed before the jobs at exit)
- AccountPtr _account;
- QString _path;
- QTimer _timer;
- int _redirectCount;
-};
-
/**
* @brief The EntityExistsJob class
*/
@@ -314,18 +223,6 @@ signals:
void jsonRecieved(const QVariantMap &json);
};
-/** Gets the SabreDAV-style error message from an error response.
- *
- * This assumes the response is XML with a 'error' tag that has a
- * 'message' tag that contains the data to extract.
- *
- * Returns a null string if no message was found.
- */
-QString OWNCLOUDSYNC_EXPORT extractErrorMessage(const QByteArray& errorResponse);
-
-/** Builds a error message based on the error and the reply body. */
-QString OWNCLOUDSYNC_EXPORT errorMessage(const QString& baseError, const QByteArray& body);
-
} // namespace OCC
#endif // NETWORKJOBS_H
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list