From cf49c8e2bfbcafe5ef95265f5416610eed7935fc Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 6 May 2016 11:11:50 -0700 Subject: [PATCH] Add getUserAgent function that includes plugin information --- interface/src/Application.cpp | 34 ++++++++++++++++++++++++++++++++++ interface/src/Application.h | 3 +++ 2 files changed, 37 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5f08877ae2..edc6227bfc 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1057,6 +1057,40 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : firstRun.set(false); } +QString Application::getUserAgent() { + if (QThread::currentThread() != thread()) { + QString userAgent; + + QMetaObject::invokeMethod(this, "getUserAgent", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QString, userAgent)); + + return userAgent; + } + + QString userAgent = "Mozilla/5.0 (HighFidelityInterface/" + BuildInfo::VERSION + "; " + + QSysInfo::productType() + " " + QSysInfo::productVersion() + ")"; + + auto formatPluginName = [](QString name) -> QString { return name.trimmed().replace(" ", "-"); }; + + // For each plugin, add to userAgent + auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); + foreach(auto dp, displayPlugins) { + if (dp->isActive() && dp->isHmd()) { + userAgent += " " + formatPluginName(dp->getName()); + } + } + + // For each plugin, add to userAgent + auto inputPlugins= PluginManager::getInstance()->getInputPlugins(); + foreach(auto ip, inputPlugins) { + if (ip->isActive()) { + userAgent += " " + formatPluginName(ip->getName()); + } + } + + return userAgent; +} + + void Application::checkChangeCursor() { QMutexLocker locker(&_changeCursorLock); diff --git a/interface/src/Application.h b/interface/src/Application.h index 558190c8d1..5616722c92 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -112,6 +112,9 @@ public: QString getPreviousScriptLocation(); void setPreviousScriptLocation(const QString& previousScriptLocation); + // Return an HTTP User-Agent string with OS and device information. + Q_INVOKABLE QString getUserAgent(); + void initializeGL(); void initializeUi(); void paintGL();