MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / executeTask

Method executeTask

launcher/screenshots/ImgurUpload.cpp:56–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54}
55
56void ImgurUpload::executeTask()
57{
58 finished = false;
59 m_state = Task::State::Running;
60 QNetworkRequest request(m_url);
61 request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgentUncached().toUtf8());
62 request.setRawHeader("Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toStdString().c_str());
63 request.setRawHeader("Accept", "application/json");
64
65 QFile f(m_shot->m_file.absoluteFilePath());
66 if (!f.open(QFile::ReadOnly))
67 {
68 emitFailed();
69 return;
70 }
71
72 QHttpMultiPart *multipart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
73 QHttpPart filePart;
74 filePart.setBody(f.readAll().toBase64());
75 filePart.setHeader(QNetworkRequest::ContentTypeHeader, "image/png");
76 filePart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"image\"");
77 multipart->append(filePart);
78 QHttpPart typePart;
79 typePart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"type\"");
80 typePart.setBody("base64");
81 multipart->append(typePart);
82 QHttpPart namePart;
83 namePart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"name\"");
84 namePart.setBody(m_shot->m_file.baseName().toUtf8());
85 multipart->append(namePart);
86
87 QNetworkReply *rep = m_network->post(request, multipart);
88
89 m_reply.reset(rep);
90 connect(rep, &QNetworkReply::uploadProgress, this, &ImgurUpload::downloadProgress);
91 connect(rep, &QNetworkReply::finished, this, &ImgurUpload::downloadFinished);
92#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
93 connect(rep, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), SLOT(downloadError(QNetworkReply::NetworkError)));
94#else
95 connect(rep, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(downloadError(QNetworkReply::NetworkError)));
96#endif
97}
98void ImgurUpload::downloadError(QNetworkReply::NetworkError error)
99{
100 qCritical() << "ImgurUpload failed with error" << m_reply->errorString() << "Server reply:\n" << m_reply->readAll();

Callers

nothing calls this directly

Calls 6

QStringClass · 0.85
getUserAgentUncachedMethod · 0.80
openMethod · 0.80
appendMethod · 0.80
postMethod · 0.80
resetMethod · 0.45

Tested by

no test coverage detected