2 #if !TTK_QT_VERSION_CHECK(5,8,0)
42 TTK_ERROR_STREAM(
"Abnormal network connection, module" <<
this <<
"code" << error);
58 for(
const QSslError &error :
qAsConst(errors))
60 if(!errorString.isEmpty())
64 errorString += error.errorString();
68 reply->ignoreSslErrors();
76 request->setRawHeader(
"User-Agent", data.isEmpty() ? QByteArray(
"Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0") : data);
81 request->setRawHeader(
"Content-Type", data.isEmpty() ? QByteArray(
"application/x-www-form-urlencoded") : data);
87 QSslConfiguration sslConfig = request->sslConfiguration();
88 sslConfig.setPeerVerifyMode(
mode);
89 request->setSslConfiguration(sslConfig);
100 QNetworkRequest request;
106 QNetworkAccessManager manager;
107 QNetworkReply *reply = manager.head(request);
108 QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
112 if(reply->error() != QNetworkReply::NoError)
114 TTK_INFO_STREAM(reply->error() << reply->errorString() << reply->readAll());
118 size = reply->header(QNetworkRequest::ContentLengthHeader).toLongLong();
119 const QVariant &redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
120 if(redirection.isValid())
125 reply->deleteLater();
132 QNetworkAccessManager manager;
133 QNetworkReply *reply = manager.get(*request);
134 QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
138 if(reply->error() != QNetworkReply::NoError)
140 TTK_INFO_STREAM(reply->error() << reply->errorString() << reply->readAll());
144 const QVariant &redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
145 if(redirection.isValid())
147 reply->deleteLater();
148 return redirection.toString().toUtf8();
151 const QByteArray bytes(reply->readAll());
152 reply->deleteLater();
159 QNetworkAccessManager manager;
160 QNetworkReply *reply = manager.post(*request, data);
161 QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
165 if(reply->error() != QNetworkReply::NoError)
167 TTK_INFO_STREAM(reply->error() << reply->errorString() << reply->readAll());
171 const QByteArray bytes(reply->readAll());
172 reply->deleteLater();
179 QNetworkAccessManager manager;
180 QNetworkReply *reply = manager.put(*request, data);
181 QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
185 if(reply->error() != QNetworkReply::NoError)
187 TTK_INFO_STREAM(reply->error() << reply->errorString() << reply->readAll());
191 const QByteArray bytes(reply->readAll());
192 reply->deleteLater();
199 QNetworkAccessManager manager;
200 #if TTK_QT_VERSION_CHECK(5,8,0)
201 QNetworkReply *reply = manager.sendCustomRequest(*request,
"PATCH", data);
203 QBuffer *buffer =
new QBuffer;
204 buffer->setData(data);
205 if(!buffer->open(QIODevice::ReadOnly))
211 QNetworkReply *reply = manager.sendCustomRequest(*request,
"PATCH", buffer);
212 buffer->setParent(reply);
214 QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
218 if(reply->error() != QNetworkReply::NoError)
220 TTK_INFO_STREAM(reply->error() << reply->errorString() << reply->readAll());
224 const QByteArray bytes(reply->readAll());
225 reply->deleteLater();
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPost(QNetworkRequest *request, const QByteArray &data)
TTK_MODULE_EXPORT qint64 fetchFileSizeByUrl(const QString &url)
TTK_MODULE_EXPORT void setUserAgentHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPatch(QNetworkRequest *request, const QByteArray &data)
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
volatile TTK::NetworkCode m_stateCode
void downloadDataChanged(const QString &bytes)
#define QtNetworkErrorVoidConnect(p, q, f, s)
Network error void connect.
int exec(ProcessEventsFlags flags=AllEvents)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
TTKAbstractNetwork(QObject *parent=nullptr)
The class of the ttk event loop.
volatile bool m_interrupt
#define TTK_INFO_STREAM(msg)
The namespace of the application object.
QNetworkAccessManager m_manager
TTK_MODULE_EXPORT void setContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPut(QNetworkRequest *request, const QByteArray &data)
virtual void replyError(QNetworkReply::NetworkError error)
virtual void downloadFinished()
virtual void sslErrors(QNetworkReply *reply, const QList< QSslError > &errors)
#define TTK_ERROR_STREAM(msg)
void sslErrorsString(QNetworkReply *reply, const QList< QSslError > &errors)