diff --git a/libraries/shared/src/FileDownloader.cpp b/libraries/shared/src/FileDownloader.cpp new file mode 100644 index 0000000000..5d4a82ca00 --- /dev/null +++ b/libraries/shared/src/FileDownloader.cpp @@ -0,0 +1,42 @@ +// +// FileDownloader.cpp +// hifi +// +// Created by Clement Brisset on 3/14/14. +// Copyright (c) 2014 HighFidelity, Inc. All rights reserved. +// +// + +#include +#include +#include +#include + +#include "FileDownloader.h" + +FileDownloader::FileDownloader(const QUrl dataURL, QObject* parent) : QObject(parent) { + connect(&_networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(processReply(QNetworkReply*))); + + QNetworkRequest request(dataURL); + _networkAccessManager.get(request); +} + +void FileDownloader::processReply(QNetworkReply *reply) { + if (reply->error() != QNetworkReply::NoError) { + emit done(reply->error()); + return; + } + + _downloadedData = reply->readAll(); + reply->deleteLater(); + + emit done(QNetworkReply::NoError); +} + +QByteArray FileDownloader::download(const QUrl dataURL) { + QEventLoop loop; + FileDownloader downloader(dataURL); + connect(&downloader, SIGNAL(done()), &loop, SLOT(quit())); + loop.exec(); + return downloader.getData(); +} \ No newline at end of file diff --git a/libraries/shared/src/FileDownloader.h b/libraries/shared/src/FileDownloader.h new file mode 100644 index 0000000000..892fd10a96 --- /dev/null +++ b/libraries/shared/src/FileDownloader.h @@ -0,0 +1,35 @@ +// +// FileDownloader.h +// hifi +// +// Created by Clement Brisset on 3/14/14. +// Copyright (c) 2014 HighFidelity, Inc. All rights reserved. +// +// + +#ifndef __hifi__FileDownloader__ +#define __hifi__FileDownloader__ + +#include +#include + +class FileDownloader : public QObject { +public: + FileDownloader(const QUrl dataURL, QObject* parent = NULL); + QByteArray getData() const { return _downloadedData; } + + static QByteArray download(const QUrl dataURL); + +signals: + void done(QNetworkReply::NetworkError); + +private slots: + void processReply(QNetworkReply* reply); + +private: + QNetworkAccessManager _networkAccessManager; + QByteArray _downloadedData; +}; + + +#endif /* defined(__hifi__FileDownloader__) */