Newer
Older
*
* @author Akira Ohgaki <akiraohgaki@gmail.com>
* @copyright Akira Ohgaki
*/
#pragma once
#include <QObject>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QNetworkReply>
class NetworkResource : public QObject
{
Q_OBJECT
public:
explicit NetworkResource(const QString &id = "", const QUrl &url = QUrl(), bool async = true, QObject *parent = 0);
NetworkResource(const NetworkResource &other, QObject *parent = 0);
NetworkResource &operator =(const NetworkResource &other);
QUrl url() const;
void setUrl(const QUrl &url);
bool async() const;
QNetworkRequest request() const;
void setRequest(const QNetworkRequest &request);
QNetworkAccessManager *manager() const;
QNetworkReply *reply() const;
QString method() const;
QString contentType() const;
QByteArray contentData() const;
NetworkResource *post(const QByteArray &contentData, const QString &contentType);
NetworkResource *post(const QUrlQuery &contentData);
NetworkResource *put(const QByteArray &contentData, const QString &contentType);
NetworkResource *put(const QUrlQuery &contentData);
NetworkResource *deleteResource();
QByteArray readData();
bool saveData(const QString &path);
signals:
void finished(NetworkResource *resource);
void downloadProgress(QString id, qint64 bytesReceived, qint64 bytesTotal);
void uploadProgress(QString id, qint64 bytesSent, qint64 bytesTotal);
public slots:
void abort();
private slots:
void replyFinished();
void replyDownloadProgress(qint64 bytesReceived, qint64 bytesTotal);
void replyUploadProgress(qint64 bytesSent, qint64 bytesTotal);
private:
void setManager(QNetworkAccessManager *manager);
void setReply(QNetworkReply *reply);
void setMethod(const QString &method);
void setContentType(const QString &contentType);
void setContentData(const QByteArray &contentData);
QUrl url_;
bool async_;
QNetworkRequest request_;
QNetworkAccessManager *manager_;
QNetworkReply *reply_;
QString method_;