diff options
Diffstat (limited to 'installerbuilder/libinstaller/kdtools/KDUpdater/kdupdaterfiledownloader_p.h')
-rw-r--r-- | installerbuilder/libinstaller/kdtools/KDUpdater/kdupdaterfiledownloader_p.h | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/installerbuilder/libinstaller/kdtools/KDUpdater/kdupdaterfiledownloader_p.h b/installerbuilder/libinstaller/kdtools/KDUpdater/kdupdaterfiledownloader_p.h new file mode 100644 index 000000000..516bc3c3d --- /dev/null +++ b/installerbuilder/libinstaller/kdtools/KDUpdater/kdupdaterfiledownloader_p.h @@ -0,0 +1,243 @@ +/**************************************************************************** +** Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Tools library. +** +** Licensees holding valid commercial KD Tools licenses may use this file in +** accordance with the KD Tools Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU Lesser General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.LGPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KD_UPDATER_FILE_DOWNLOADER_P_H +#define KD_UPDATER_FILE_DOWNLOADER_P_H + +#include "kdupdaterfiledownloader.h" +#include <KDToolsCore/pimpl_ptr.h> + +#include <QtCore/QCryptographicHash> +#include <QtNetwork/QNetworkReply> + +class QIODevice; + +// these classes are not a part of the public API + +namespace KDUpdater +{ + + //TODO make it a KDJob once merged + class HashVerificationJob : public QObject + { + Q_OBJECT + public: + enum Error { + NoError=0, + ReadError=128, + SumsDifferError + }; + + explicit HashVerificationJob( QObject* parent=0 ); + ~HashVerificationJob(); + + void setDevice( QIODevice* dev ); + void setSha1Sum( const QByteArray& data ); + + bool hasError() const; + int error() const; + + void start(); + + Q_SIGNALS: + void finished( KDUpdater::HashVerificationJob* ); + + private: + void emitFinished(); + /* reimp */ void timerEvent( QTimerEvent* te ); + + private: + class Private; + kdtools::pimpl_ptr<Private> d; + }; + + class LocalFileDownloader : public FileDownloader + { + Q_OBJECT + + public: + explicit LocalFileDownloader(QObject* parent=0); + ~LocalFileDownloader(); + + bool canDownload() const; + bool isDownloaded() const; + QString downloadedFileName() const; + /* reimp */ LocalFileDownloader* clone( QObject* parent=0 ) const; + + public Q_SLOTS: + void cancelDownload(); + + protected: + void timerEvent(QTimerEvent* te); + /* reimp */ void onError(); + /* reimp */ void onSuccess(); + + private Q_SLOTS: + /* reimp */ void doDownload(); + + private: + struct LocalFileDownloaderData; + LocalFileDownloaderData* d; + }; + + class ResourceFileDownloader : public FileDownloader + { + Q_OBJECT + + public: + explicit ResourceFileDownloader(QObject* parent=0); + ~ResourceFileDownloader(); + + bool canDownload() const; + bool isDownloaded() const; + QString downloadedFileName() const; + /* reimp */ ResourceFileDownloader* clone( QObject* parent=0 ) const; + + public Q_SLOTS: + void cancelDownload(); + + protected: + void timerEvent(QTimerEvent* te); + /* reimp */ void onError(); + /* reimp */ void onSuccess(); + + private Q_SLOTS: + /* reimp */ void doDownload(); + + private: + struct ResourceFileDownloaderData; + ResourceFileDownloaderData* d; + }; + + class FtpDownloader : public FileDownloader + { + Q_OBJECT + + public: + explicit FtpDownloader(QObject* parent=0); + ~FtpDownloader(); + + bool canDownload() const; + bool isDownloaded() const; + QString downloadedFileName() const; + /* reimp */ FtpDownloader* clone( QObject* parent=0 ) const; + + public Q_SLOTS: + void cancelDownload(); + + protected: + /* reimp */ void onError(); + /* reimp */ void onSuccess(); + + private Q_SLOTS: + /* reimp */ void doDownload(); + void ftpDone(bool error); + void ftpCmdStarted(int id); + void ftpCmdFinished(int id, bool error); + void ftpStateChanged(int state); + void ftpDataTransferProgress(qint64 done, qint64 total); + + private: + struct FtpDownloaderData; + FtpDownloaderData* d; + }; + + class HttpDownloader : public FileDownloader + { + Q_OBJECT + + public: + explicit HttpDownloader(QObject* parent=0); + ~HttpDownloader(); + + bool canDownload() const; + bool isDownloaded() const; + QString downloadedFileName() const; + /* reimp */ HttpDownloader* clone( QObject* parent=0 ) const; + + public Q_SLOTS: + void cancelDownload(); + + protected: + /* reimp */ void onError(); + /* reimp */ void onSuccess(); + + private Q_SLOTS: + /* reimp */ void doDownload(); + void httpReadyRead(); + void httpReadProgress( qint64 done, qint64 total ); + void httpError( QNetworkReply::NetworkError ); + void httpDone( bool error ); + void httpReqFinished(); + + private: + struct HttpDownloaderData; + HttpDownloaderData* d; + }; + + class SignatureVerificationResult; + class SignatureVerifier; + + class SignatureVerificationDownloader : public FileDownloader + { + Q_OBJECT + public: + explicit SignatureVerificationDownloader( FileDownloader* downloader, QObject* parent=0 ); + ~SignatureVerificationDownloader(); + + QUrl signatureUrl() const; + void setSignatureUrl( const QUrl& url ); + + const SignatureVerifier* signatureVerifier() const; + void setSignatureVerifier( const SignatureVerifier* verifier ); + + SignatureVerificationResult result() const; + + /* reimp */ bool canDownload() const; + /* reimp */ bool isDownloaded() const; + /* reimp */ QString downloadedFileName() const; + /* reimp */ FileDownloader* clone( QObject* parent=0 ) const; + + public Q_SLOTS: + /* reimp */ void cancelDownload(); + + protected: + /* reimp */ void onError(); + /* reimp */ void onSuccess(); + + private Q_SLOTS: + /* reimp */ void doDownload(); + void dataDownloadStarted(); + void dataDownloadCanceled(); + void dataDownloadCompleted(); + void dataDownloadAborted(const QString& errorMessage); + void signatureDownloadCanceled(); + void signatureDownloadCompleted(); + void signatureDownloadAborted(const QString& errorMessage); + + private: + class Private; + kdtools::pimpl_ptr<Private> d; + }; +} + +#endif |