From 06701856f8eaed0f6bf802308c07952f0f0dd92e Mon Sep 17 00:00:00 2001 From: Tannin Date: Mon, 18 Aug 2014 22:57:00 +0200 Subject: - login package now also uses a "proper" user-agent --- src/nexusinterface.cpp | 12 ++++++------ src/nexusinterface.h | 2 -- src/nxmaccessmanager.cpp | 12 ++++++++++-- src/nxmaccessmanager.h | 7 ++++++- 4 files changed, 22 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index c7e2df9e..d844cd39 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -146,17 +146,16 @@ NexusInterface::NexusInterface() : m_NMMVersion() { atexit(&cleanup); - m_AccessManager = new NXMAccessManager(this); - - m_DiskCache = new QNetworkDiskCache(this); - connect(m_AccessManager, SIGNAL(requestNXMDownload(QString)), this, SLOT(downloadRequestedNXM(QString))); - VS_FIXEDFILEINFO version = GetFileVersion(ToWString(QApplication::applicationFilePath())); - m_MOVersion = VersionInfo(version.dwFileVersionMS >> 16, version.dwFileVersionMS & 0xFFFF, version.dwFileVersionLS >> 16); + + m_AccessManager = new NXMAccessManager(this, m_MOVersion.displayString()); + + m_DiskCache = new QNetworkDiskCache(this); + connect(m_AccessManager, SIGNAL(requestNXMDownload(QString)), this, SLOT(downloadRequestedNXM(QString))); } @@ -188,6 +187,7 @@ void NexusInterface::setCacheDirectory(const QString &directory) void NexusInterface::setNMMVersion(const QString &nmmVersion) { m_NMMVersion = nmmVersion; + m_AccessManager->setNMMVersion(nmmVersion); } void NexusInterface::loginCompleted() diff --git a/src/nexusinterface.h b/src/nexusinterface.h index db61b0bf..cc54daa9 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -305,8 +305,6 @@ private: private: -// static NexusInterface *s_Instance; - QNetworkDiskCache *m_DiskCache; NXMAccessManager *m_AccessManager; diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index a238d1c8..18b47707 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -41,10 +41,11 @@ using namespace MOBase; using namespace MOShared; -NXMAccessManager::NXMAccessManager(QObject *parent) +NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion) : QNetworkAccessManager(parent) , m_LoginReply(NULL) , m_ProgressDialog() + , m_MOVersion(moVersion) , m_LoginAttempted(false) { setCookieJar(new PersistentCookieJar( @@ -59,6 +60,10 @@ NXMAccessManager::~NXMAccessManager() } } +void NXMAccessManager::setNMMVersion(const QString &nmmVersion) +{ + m_NMMVersion = nmmVersion; +} QNetworkReply *NXMAccessManager::createRequest( QNetworkAccessManager::Operation operation, const QNetworkRequest &request, @@ -122,7 +127,7 @@ void NXMAccessManager::login(const QString &username, const QString &password) void NXMAccessManager::pageLogin() { - QString requestString = (ToQString(GameInfo::instance().getNexusPage()) + "/sessions/?Login&uri=%1") + QString requestString = (ToQString(GameInfo::instance().getNexusPage()) + "/Sessions/?Login&uri=%1") .arg(QString(QUrl::toPercentEncoding(ToQString(GameInfo::instance().getNexusPage())))); QNetworkRequest request(requestString); @@ -141,6 +146,9 @@ void NXMAccessManager::pageLogin() postDataQuery = postData.encodedQuery(); #endif + QString userAgent = QString("Mod Organizer v%1 (compatible to Nexus Client v%2)").arg(m_MOVersion).arg(m_NMMVersion); + request.setRawHeader("User-Agent", userAgent.toUtf8()); + m_ProgressDialog.setLabelText(tr("Logging into Nexus")); QList buttons = m_ProgressDialog.findChildren(); buttons.at(0)->setEnabled(false); diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h index 525394c9..9d692bba 100644 --- a/src/nxmaccessmanager.h +++ b/src/nxmaccessmanager.h @@ -35,10 +35,12 @@ class NXMAccessManager : public QNetworkAccessManager Q_OBJECT public: - explicit NXMAccessManager(QObject *parent); + explicit NXMAccessManager(QObject *parent, const QString &moVersion); ~NXMAccessManager(); + void setNMMVersion(const QString &nmmVersion); + bool loggedIn() const; bool loginAttempted() const { return m_LoginAttempted; } @@ -93,6 +95,9 @@ private: QNetworkReply *m_LoginReply; QProgressDialog m_ProgressDialog; + QString m_MOVersion; + QString m_NMMVersion; + QString m_Username; QString m_Password; -- cgit v1.3.1