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);
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(
"Host", host);
84 headers.insert(
"Date", QString::number(deadline));
85 headers.insert(
"Content-Type", contentType);
88 signature.replace(
"+",
"%2B");
89 return QString(
"%1%2/%3?OSSAccessKeyId=%4&Expires=%5&Signature=%6").arg(
HTTP_PROTOCOL, host, encodeKey,
QSyncConfig::NAME).arg(deadline).arg(signature);
95 QNetworkReply *reply =
TTKObjectCast(QNetworkReply*, sender());
98 if(reply->error() == QNetworkReply::NoError)
100 QFile file(d->m_downloadPath);
101 if(file.open(QIODevice::WriteOnly))
103 file.write(reply->readAll());
112 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)
void request(const QString &time, const QString &bucket, const QString &fileName, const QString &filePath)
#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)
QSyncDownloadData(QNetworkAccessManager *networkManager, QObject *parent=nullptr)
QMap< QString, QString > TTKStringMap
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
#define TTKObjectCast(x, y)