28 d->m_manager = networkManager;
34 d->m_downloadTime = time;
35 d->m_downloadPath = filePath;
37 const QString &method =
"GET";
44 headers.insert(
"Host", host);
45 headers.insert(
"Content-Type",
"charset=utf-8");
47 d->insertAuthorization(method, headers, resource);
49 QNetworkRequest request;
50 request.setUrl(
"http://" + host + url);
52 for(
auto it = headers.constBegin(); it != headers.constEnd(); ++it)
54 request.setRawHeader(it.key().toUtf8(), it.value().toUtf8());
57 QNetworkReply *reply = d->m_manager->get(request);
61 if(parent()->metaObject()->indexOfSlot(
"downloadProgress(QString,qint64,qint64)") != -1)
70 return downloadUrl(bucket, fileName,
"application/x-www-form-urlencoded");
75 const qint64 deadline = QDateTime::currentDateTimeUtc().addSecs(60 * 30).toMSecsSinceEpoch() / 1000;
77 const QString &encodeKey =
pathEncode(fileName);
78 const QString &method =
"GET";
83 headers.insert(
"Date", QString::number(deadline));
84 headers.insert(
"Content-Type", contentType);
85 headers.insert(
"Host", host);
88 return QString(
"http://%1/%2?OSSAccessKeyId=%3&Expires=%4&Signature=%5").arg(host, encodeKey,
QSyncConfig::NAME).arg(deadline).arg(signature);
94 QNetworkReply *reply =
TTKObjectCast(QNetworkReply*, sender());
97 if(reply->error() == QNetworkReply::NoError)
99 QFile file(d->m_downloadPath);
100 if(file.open(QIODevice::WriteOnly))
102 file.write(reply->readAll());
111 reply->deleteLater();
The class of the sync cloud data interface private.
QString pathEncode(const QString &data) const
void replyError(QNetworkReply::NetworkError error)
The class of the sync cloud download data private.
void downloadProgressChanged(const QString &time, qint64 bytesSent, qint64 bytesTotal)
void downloadProgress(qint64 bytesSent, qint64 bytesTotal)
The class of the sync cloud data interface.
void downloadFileFinished(const QString &time)
The class of the sync cloud download data.
QString downloadUrl(const QString &bucket, const QString &fileName)
#define TTK_CREATE_PRIVATE(Class)
QSyncDownloadDataPrivate()
virtual void receiveDataFromServer() overridefinal
static QString authorizationCode(const QString &key, const QString &method, const TTKStringMap &headers, const QString &resource)
void downloadDataOperator(const QString &time, const QString &bucket, const QString &fileName, const QString &filePath)
QSyncDownloadData(QNetworkAccessManager *networkManager, QObject *parent=nullptr)
QMap< QString, QString > TTKStringMap
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
#define TTKObjectCast(x, y)