mirror of https://github.com/mgba-emu/mgba.git
Qt: Use a UA string for all HTTP requests
This commit is contained in:
parent
91e62b8e72
commit
f847502f4a
|
@ -8,16 +8,17 @@
|
||||||
#include <QNetworkAccessManager>
|
#include <QNetworkAccessManager>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
|
|
||||||
|
#include "GBAApp.h"
|
||||||
|
|
||||||
using namespace QGBA;
|
using namespace QGBA;
|
||||||
|
|
||||||
AbstractUpdater::AbstractUpdater(QObject* parent)
|
AbstractUpdater::AbstractUpdater(QObject* parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, m_netman(new QNetworkAccessManager(this))
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractUpdater::checkUpdate() {
|
void AbstractUpdater::checkUpdate() {
|
||||||
QNetworkReply* reply = m_netman->get(QNetworkRequest(manifestLocation()));
|
QNetworkReply* reply = GBAApp::app()->httpGet(manifestLocation());
|
||||||
chaseRedirects(reply, &AbstractUpdater::manifestDownloaded);
|
chaseRedirects(reply, &AbstractUpdater::manifestDownloaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ void AbstractUpdater::downloadUpdate() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_isUpdating = true;
|
m_isUpdating = true;
|
||||||
QNetworkReply* reply = m_netman->get(QNetworkRequest(url));
|
QNetworkReply* reply = GBAApp::app()->httpGet(url);
|
||||||
chaseRedirects(reply, &AbstractUpdater::updateDownloaded);
|
chaseRedirects(reply, &AbstractUpdater::updateDownloaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +55,7 @@ void AbstractUpdater::chaseRedirects(QNetworkReply* reply, void (AbstractUpdater
|
||||||
connect(reply, &QNetworkReply::finished, this, [this, reply, cb]() {
|
connect(reply, &QNetworkReply::finished, this, [this, reply, cb]() {
|
||||||
// TODO: check domains, etc
|
// TODO: check domains, etc
|
||||||
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() / 100 == 3) {
|
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() / 100 == 3) {
|
||||||
QNetworkReply* newReply = m_netman->get(QNetworkRequest(reply->header(QNetworkRequest::LocationHeader).toString()));
|
QNetworkReply* newReply = GBAApp::app()->httpGet(reply->header(QNetworkRequest::LocationHeader).toString());
|
||||||
chaseRedirects(newReply, cb);
|
chaseRedirects(newReply, cb);
|
||||||
} else {
|
} else {
|
||||||
(this->*cb)(reply);
|
(this->*cb)(reply);
|
||||||
|
@ -69,7 +70,7 @@ void AbstractUpdater::manifestDownloaded(QNetworkReply* reply) {
|
||||||
if (!url.isValid()) {
|
if (!url.isValid()) {
|
||||||
emit updateDone(false);
|
emit updateDone(false);
|
||||||
} else {
|
} else {
|
||||||
QNetworkReply* reply = m_netman->get(QNetworkRequest(url));
|
QNetworkReply* reply = GBAApp::app()->httpGet(url);
|
||||||
chaseRedirects(reply, &AbstractUpdater::updateDownloaded);
|
chaseRedirects(reply, &AbstractUpdater::updateDownloaded);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
class QNetworkAccessManager;
|
|
||||||
class QNetworkReply;
|
class QNetworkReply;
|
||||||
|
|
||||||
namespace QGBA {
|
namespace QGBA {
|
||||||
|
@ -44,7 +43,6 @@ private:
|
||||||
void updateDownloaded(QNetworkReply*);
|
void updateDownloaded(QNetworkReply*);
|
||||||
|
|
||||||
bool m_isUpdating = false;
|
bool m_isUpdating = false;
|
||||||
QNetworkAccessManager* m_netman;
|
|
||||||
QByteArray m_manifest;
|
QByteArray m_manifest;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
|
|
||||||
#include "ConfigController.h"
|
#include "ConfigController.h"
|
||||||
|
#include "GBAApp.h"
|
||||||
#include "VFileDevice.h"
|
#include "VFileDevice.h"
|
||||||
|
|
||||||
#include <mgba/core/version.h>
|
#include <mgba/core/version.h>
|
||||||
|
@ -29,10 +30,8 @@ const char* SUFFIX = "";
|
||||||
|
|
||||||
ForwarderController::ForwarderController(QObject* parent)
|
ForwarderController::ForwarderController(QObject* parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, m_netman(new QNetworkAccessManager(this))
|
|
||||||
, m_originalPath(qgetenv("PATH"))
|
, m_originalPath(qgetenv("PATH"))
|
||||||
{
|
{
|
||||||
m_netman->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
|
|
||||||
connect(this, &ForwarderController::buildFailed, this, &ForwarderController::cleanup);
|
connect(this, &ForwarderController::buildFailed, this, &ForwarderController::cleanup);
|
||||||
connect(this, &ForwarderController::buildComplete, this, &ForwarderController::cleanup);
|
connect(this, &ForwarderController::buildComplete, this, &ForwarderController::cleanup);
|
||||||
}
|
}
|
||||||
|
@ -83,7 +82,7 @@ void ForwarderController::downloadForwarderKit() {
|
||||||
emit buildFailed();
|
emit buildFailed();
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
QNetworkReply* reply = m_netman->get(QNetworkRequest(QUrl(fkUrl)));
|
QNetworkReply* reply = GBAApp::app()->httpGet(QUrl(fkUrl));
|
||||||
connectReply(reply, FORWARDER_KIT, &ForwarderController::gotForwarderKit);
|
connectReply(reply, FORWARDER_KIT, &ForwarderController::gotForwarderKit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +131,7 @@ void ForwarderController::gotForwarderKit(QNetworkReply* reply) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForwarderController::downloadManifest() {
|
void ForwarderController::downloadManifest() {
|
||||||
QNetworkReply* reply = m_netman->get(QNetworkRequest(QUrl("https://mgba.io/latest.ini")));
|
QNetworkReply* reply = GBAApp::app()->httpGet(QUrl("https://mgba.io/latest.ini"));
|
||||||
connectReply(reply, MANIFEST, &ForwarderController::gotManifest);
|
connectReply(reply, MANIFEST, &ForwarderController::gotManifest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +172,7 @@ void ForwarderController::downloadBuild(const QUrl& url) {
|
||||||
emit buildFailed();
|
emit buildFailed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QNetworkReply* reply = m_netman->get(QNetworkRequest(url));
|
QNetworkReply* reply = GBAApp::app()->httpGet(url);
|
||||||
|
|
||||||
connectReply(reply, BASE, &ForwarderController::gotBuild);
|
connectReply(reply, BASE, &ForwarderController::gotBuild);
|
||||||
connect(reply, &QNetworkReply::readyRead, this, [this, reply]() {
|
connect(reply, &QNetworkReply::readyRead, this, [this, reply]() {
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class QNetworkAccessManager;
|
|
||||||
class QNetworkReply;
|
class QNetworkReply;
|
||||||
|
|
||||||
namespace QGBA {
|
namespace QGBA {
|
||||||
|
@ -61,7 +60,6 @@ private:
|
||||||
|
|
||||||
QString m_channel{"dev"};
|
QString m_channel{"dev"};
|
||||||
QString m_outFilename;
|
QString m_outFilename;
|
||||||
QNetworkAccessManager* m_netman;
|
|
||||||
std::unique_ptr<ForwarderGenerator> m_generator;
|
std::unique_ptr<ForwarderGenerator> m_generator;
|
||||||
QFile m_sourceFile;
|
QFile m_sourceFile;
|
||||||
bool m_inProgress = false;
|
bool m_inProgress = false;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
|
|
||||||
|
#include <mgba/core/version.h>
|
||||||
#include <mgba/feature/updater.h>
|
#include <mgba/feature/updater.h>
|
||||||
#include <mgba-util/socket.h>
|
#include <mgba-util/socket.h>
|
||||||
#include <mgba-util/vfs.h>
|
#include <mgba-util/vfs.h>
|
||||||
|
@ -81,6 +82,8 @@ GBAApp::GBAApp(int& argc, char* argv[], ConfigController* config)
|
||||||
m_configController->updateOption("useDiscordPresence");
|
m_configController->updateOption("useDiscordPresence");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m_netman.setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
|
||||||
|
|
||||||
cleanupAfterUpdate();
|
cleanupAfterUpdate();
|
||||||
|
|
||||||
connect(this, &GBAApp::aboutToQuit, this, &GBAApp::cleanup);
|
connect(this, &GBAApp::aboutToQuit, this, &GBAApp::cleanup);
|
||||||
|
@ -240,6 +243,19 @@ bool GBAApp::reloadGameDB() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
QNetworkAccessManager* GBAApp::netman() {
|
||||||
|
return &m_netman;
|
||||||
|
}
|
||||||
|
|
||||||
|
QNetworkReply* GBAApp::httpGet(const QUrl& url) {
|
||||||
|
QNetworkRequest req(url);
|
||||||
|
req.setHeader(QNetworkRequest::UserAgentHeader,
|
||||||
|
QString("%1/%2 (+https://mgba.io) is definitely not Mozilla/5.0")
|
||||||
|
.arg(projectName)
|
||||||
|
.arg(projectVersion));
|
||||||
|
return m_netman.get(req);
|
||||||
|
}
|
||||||
|
|
||||||
qint64 GBAApp::submitWorkerJob(std::function<void ()> job, std::function<void ()> callback) {
|
qint64 GBAApp::submitWorkerJob(std::function<void ()> job, std::function<void ()> callback) {
|
||||||
return submitWorkerJob(job, nullptr, callback);
|
return submitWorkerJob(job, nullptr, callback);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QMultiMap>
|
#include <QMultiMap>
|
||||||
#include <QObject>
|
#include <QNetworkAccessManager>
|
||||||
|
#include <QNetworkReply>
|
||||||
#include <QRunnable>
|
#include <QRunnable>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QThreadPool>
|
#include <QThreadPool>
|
||||||
|
@ -70,6 +71,9 @@ public:
|
||||||
const NoIntroDB* gameDB() const { return m_db; }
|
const NoIntroDB* gameDB() const { return m_db; }
|
||||||
bool reloadGameDB();
|
bool reloadGameDB();
|
||||||
|
|
||||||
|
QNetworkAccessManager* netman();
|
||||||
|
QNetworkReply* httpGet(const QUrl&);
|
||||||
|
|
||||||
qint64 submitWorkerJob(std::function<void ()> job, std::function<void ()> callback = {});
|
qint64 submitWorkerJob(std::function<void ()> job, std::function<void ()> callback = {});
|
||||||
qint64 submitWorkerJob(std::function<void ()> job, QObject* context, std::function<void ()> callback);
|
qint64 submitWorkerJob(std::function<void ()> job, QObject* context, std::function<void ()> callback);
|
||||||
bool removeWorkerJob(qint64 jobId);
|
bool removeWorkerJob(qint64 jobId);
|
||||||
|
@ -128,6 +132,8 @@ private:
|
||||||
QFont m_monospace;
|
QFont m_monospace;
|
||||||
|
|
||||||
NoIntroDB* m_db = nullptr;
|
NoIntroDB* m_db = nullptr;
|
||||||
|
|
||||||
|
QNetworkAccessManager m_netman;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue