123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- #include "tchttpservice.h"
- QScopedPointer<TCHttpService> TCHttpService::m_instance;
- TCHttpService *TCHttpService::getInstance()
- {
- if (m_instance.isNull()) {
- m_instance.reset(new TCHttpService);
- }
- return m_instance.data();
- }
- void TCHttpService::apiLogin()
- {
- QByteArray pwdMd5 = QCryptographicHash::hash(m_firstPwd.toUtf8(), QCryptographicHash::Md5);
- QString md5Hex = pwdMd5.toHex();
- QString urlStr;
- // if (m_enableSsl)
- urlStr = "https://" + m_domain + "/api/login";
- // else
- // urlStr = "http://" + m_domain + "/api/login";
- QUrl url(urlStr);
- QJsonObject jsonObj;
- jsonObj["user"]="test1";
- jsonObj["pwd"]=md5Hex;
- QJsonDocument jsonDoc(jsonObj);
- QByteArray jsonData = jsonDoc.toJson();
- QMap<QString, QString> headers;
- headers.insert("Content-Type", "application/json");
- QNetworkReply* reply = nullptr;
- // qDebug() <<url;
- // QNetworkRequest request(url);
- // reply = m_manager.post(request, jsonData);
- // QObject::connect(reply, &QNetworkReply::finished, [this, reply]() {
- // emit requestFinished(reply);
- // });
- Post(url, headers, {}, jsonData, 1);
- }
- void TCHttpService::apiMyfileCount()
- {
- QString urlStr;
- if (m_enableSsl)
- urlStr = "https://" + m_domain + "/api/myfiles";
- else
- urlStr = "http://" + m_domain + "/api/myfiles";
- QMap<QString, QString> headers;
- headers.insert("Content-Type", "application/json");
- QString bodyStr = QString("\"%1\":\"%2\",\"%3\":\"%4\"").arg("token").arg(m_token).arg("user").arg(m_userName);
- QMap<QString, QString> params;
- params.insert("cmd", "count");
- // QNetworkReply* reply = Post(urlStr, headers, params, bodyStr.toUtf8());
- // QObject::connect(reply, &QNetworkReply::finished, [this, reply]{
- // QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
- // QJsonObject jsonObj = jsonDoc.object();
- // int code = jsonObj["code"].toInt();
- // if (code == 0) {
- // int total = jsonObj["total"].toInt();
- // this->m_total = total;
- // }
- // reply->deleteLater();
- // });
- }
- void TCHttpService::apiMyfileNormal()
- {
- QString urlStr;
- if (m_enableSsl)
- urlStr = "https://" + m_domain + "/api/myfiles";
- else
- urlStr = "http://" + m_domain + "/api/myfiles";
- QMap<QString, QString> headers;
- headers.insert("Content-Type", "application/json");
- QMap<QString, QString> params;
- params.insert("cmd", "normal");
- QString bodyStr = QString("\"%1\":\"%2\",\"%3\":\"%4\",\"%5\":\"%6\",\"%7\":\"%8\"").arg("token").arg(m_token).
- arg("user").arg(m_userName).arg("count").arg(m_total).arg("start").arg(0);
- // QNetworkReply* reply = Post(QUrl(urlStr), headers, params, bodyStr.toUtf8());
- // QObject::connect(reply, &QNetworkReply::finished, [this, reply]{
- // QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
- // QJsonObject jsonObj = jsonDoc.object();
- // int code = jsonObj["code"].toInt();
- // if (code == 0) {
- // int count = jsonObj["count"].toInt();
- // if (count != 0) {
- // QJsonArray array = jsonObj["files"].toArray();
- // for (const QJsonValue& value : array) {
- // QJsonObject item = value.toObject();
- // updateFileMap(item);
- // }
- // }
- // }
- // reply->deleteLater();
- // });
- }
- void TCHttpService::apiMd5(const QString& filePath)
- {
- QFile file(filePath);
- if (!file.open(QIODevice::ReadOnly)) {
- return;
- }
- QByteArray fileMd5;
- QCryptographicHash hash(QCryptographicHash::Md5);
- if (hash.addData(&file)) {
- fileMd5 = hash.result().toHex();
- }
- else
- return;
- QString urlStr;
- if (m_enableSsl)
- urlStr = "https://" + m_domain + "/api/md5";
- else
- urlStr = "http://" + m_domain + "/api/md5";
- QMap<QString, QString> headers;
- headers.insert("Content-Type", "application/json");
- QString md5Str = QString::fromUtf8(fileMd5);
- QString bodyStr = QString("\"%1\":\"%2\",\"%3\":\"%4\",\"%5\":\"%6\",\"%7\":\"%8\"").arg("token").arg(m_token).
- arg("md5").arg(md5Str).arg("filename").arg(QFileInfo(file).fileName()).arg("user").arg(m_userName);
- file.close();
- // QNetworkReply* reply = Post(urlStr, headers, {}, bodyStr.toUtf8());
- // QObject::connect(reply, &QNetworkReply::finished, [this, reply, filePath, md5Str]{
- // QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
- // QJsonObject jsonObj = jsonDoc.object();
- // int code = jsonObj["code"].toInt();
- // switch (code) {
- // case 0:
- // break;
- // case 1:
- // apiUpload(filePath, md5Str);
- // break;
- // }
- // });
- }
- void TCHttpService::apiUpload(const QString &filePath, const QString &md5Str)
- {
- QString urlStr;
- if (m_enableSsl)
- urlStr = "https://" + m_domain + "/api/upload";
- else
- urlStr = "http://" + m_domain + "/api/upload";
- QFile file(filePath);
- QFileInfo info(file);
- QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
- QHttpPart filePart;
- QString contentTypeStrFile = QString("form-data; name=\"file\"; filename=\"%1\"").arg(info.fileName());
- filePart.setHeader(QNetworkRequest::ContentDispositionHeader,
- QVariant(contentTypeStrFile));
- filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/octet-stream"));
- if (!file.open(QIODevice::ReadOnly)) {
- return;
- }
- filePart.setBodyDevice(&file);
- file.setParent(multiPart);
- multiPart->append(filePart);
- QHttpPart userPart;
- QString contentTypeStrUser = QString("form-data; name=\"user\"");
- userPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(contentTypeStrUser));
- userPart.setBody(m_userName.toUtf8());
- multiPart->append(userPart);
- QHttpPart md5Part;
- QString contentTypeStrMd5 = QString("form-data; name=\"md5\"");
- md5Part.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(contentTypeStrMd5));
- md5Part.setBody(md5Str.toUtf8());
- multiPart->append(md5Part);
- QHttpPart sizePart;
- QString contentTypeStrSize = QString("form-data; name=\"size\"");
- sizePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(contentTypeStrSize));
- sizePart.setBody(QString::number(info.size()).toUtf8());
- multiPart->append(sizePart);
- QUrl url(urlStr);
- QNetworkRequest request(url);
- QNetworkReply* reply = m_manager.post(request, multiPart);
- multiPart->setParent(reply);
- QObject::connect(reply, &QNetworkReply::finished, [this, reply]{
- QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
- QJsonObject jsonObj = jsonDoc.object();
- int code = jsonObj["code"].toInt();
- if (code == 0) {
- emit signal_uploadSuc();
- }
- reply->deleteLater();
- });
- }
- void TCHttpService::apiSharePicShare(const QString &fileName, const QString &md5)
- {
- QString urlStr;
- if (m_enableSsl)
- urlStr = "https://" + m_domain + "/api/sharepic";
- else
- urlStr = "http://" + m_domain + "/api/sharepic";
- QMap<QString, QString> headers;
- QMap<QString, QString> body;
- QMap<QString, QString> params;
- headers.insert("Content-Type", "application/json");
- QString bodyStr = QString("\"%1\":\"%2\",\"%3\":\"%4\",\"%5\":\"%6\",\"%7\":\"%8\"").arg("token").arg(m_token).
- arg("user").arg(m_userName).arg("md5").arg(md5).arg("filename").arg(fileName);
- params.insert("cmd", "share");
- // QNetworkReply* reply = Post(QUrl(urlStr), headers, params, bodyStr.toUtf8());
- // QObject::connect(reply, &QNetworkReply::finished, [this, reply]{
- // QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
- // QJsonObject jsonObj = jsonDoc.object();
- // int code = jsonObj["code"].toInt();
- // if (code == 0) {
- // emit signal_shareSuc();
- // }
- // reply->deleteLater();
- // });
- }
- void TCHttpService::setConfiguration(QString userName, QString firstPwd, QString domain)
- {
- qDebug() << "setConfiguration";
- this->m_domain = domain;
- this->m_userName = userName;
- this->m_firstPwd = firstPwd;
- connect(this, &TCHttpService::requestFinished, [](QNetworkReply* reply){
- qDebug() << "readall";
- qDebug() <<reply->readAll();
- reply->deleteLater();
- });
- apiLogin();
- }
- void TCHttpService::setSsl(bool enable)
- {
- qDebug() << "setSsl:" <<enable;
- this->m_enableSsl = enable;
- }
- QNetworkReply *TCHttpService::Get(const QUrl &url, const QMap<QString, QString> headers, const QMap<QString, QString> params)
- {
- QUrlQuery query;
- for (auto ite = params.constBegin(); ite != params.constEnd(); ite++) {
- query.addQueryItem(ite.key(), ite.value());
- }
- QUrl requestUrl = url;
- requestUrl.setQuery(query);
- QNetworkRequest request(requestUrl);
- for (auto ite = headers.constBegin(); ite != headers.constEnd(); ite++) {
- request.setRawHeader(ite.key().toUtf8(), ite.value().toUtf8());
- }
- QNetworkReply* reply = m_manager.get(request);
- return reply;
- }
- QNetworkReply *TCHttpService::Post(const QUrl &url, const QMap<QString, QString> headers, const QMap<QString, QString> params, const QByteArray body)
- {
- }
- QByteArray TCHttpService::Post(QUrl url, QMap<QString, QString> headers, QMap<QString, QString> params, QByteArray body, int i)
- {
- QUrlQuery query;
- for (auto ite = params.constBegin(); ite != params.constEnd(); ite++) {
- query.addQueryItem(ite.key(), ite.value());
- }
- QUrl requestUrl = url;
- requestUrl.setQuery(query);
- qDebug() << requestUrl;
- QNetworkRequest request(url);
- // for (auto ite = headers.constBegin(); ite != headers.constEnd(); ite++) {
- // request.setRawHeader(ite.key().toUtf8(), ite.value().toUtf8());
- // }
- qDebug() << 1;
- QJsonObject jsonObj;
- jsonObj["user"]="test1";
- jsonObj["pwd"]="e10adc3949ba59abbe56e057f20f883e";
- QJsonDocument jsonDoc(jsonObj);
- QByteArray jsonData = jsonDoc.toJson();
- qDebug() << 2;
- QNetworkReply* reply = nullptr;
- qDebug() << 3;
- reply = m_manager.post(request, jsonData);
- qDebug() << 4;
- QObject::connect(reply, &QNetworkReply::finished, [this, reply](){
- // QByteArray respData = reply->readAll();
- // qDebug() <<respData;
- // return respData;
- // reply->deleteLater();
- qDebug() << "emit requestFinished";
- // emit requestFinished(reply);
- });
- }
- void TCHttpService::updateFileMap(QJsonObject jsonObj)
- {
- QString fileMD5 = jsonObj["md5"].toString();
- QString fileUrl = jsonObj["http"].toString();
- QMap<QString, QString>::iterator ite = m_fileMap.begin();
- if (ite != m_fileMap.end())
- return;
- m_fileMap.insert(fileMD5, fileUrl);
- }
- TCHttpService::TCHttpService(QObject *parent) : QObject(parent)
- {
- }
|