Skip to content

Commit

Permalink
send uuid as user-agent
Browse files Browse the repository at this point in the history
  • Loading branch information
PeterPetrik committed Apr 26, 2024
1 parent 41ef477 commit dcabf91
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 9 deletions.
7 changes: 3 additions & 4 deletions app/appsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@
#include <QSettings>
#include <QFileInfo>

const QString AppSettings::INPUTAPP_GROUP_NAME = QStringLiteral( "inputApp" );
const QString AppSettings::POSITION_PROVIDERS_GROUP = QStringLiteral( "inputApp/positionProviders" );

AppSettings::AppSettings( QObject *parent ): QObject( parent )
{
QSettings settings;
settings.beginGroup( INPUTAPP_GROUP_NAME );
settings.beginGroup( CoreUtils::QSETTINGS_APP_GROUP_NAME );
QString path = settings.value( "defaultProject", "" ).toString();
QString layer = settings.value( "defaultLayer/" + path, "" ).toString();
double gpsTolerance = settings.value( "gpsTolerance", 10 ).toDouble();
Expand Down Expand Up @@ -250,15 +249,15 @@ void AppSettings::savePositionProviders( const QVariantList &providers )
void AppSettings::setValue( const QString &key, const QVariant &value )
{
QSettings settings;
settings.beginGroup( INPUTAPP_GROUP_NAME );
settings.beginGroup( CoreUtils::QSETTINGS_APP_GROUP_NAME );
settings.setValue( key, value );
settings.endGroup();
}

QVariant AppSettings::value( const QString &key, const QVariant &defaultValue )
{
QSettings settings;
settings.beginGroup( INPUTAPP_GROUP_NAME );
settings.beginGroup( CoreUtils::QSETTINGS_APP_GROUP_NAME );
QVariant value = settings.value( key, defaultValue );
settings.endGroup();

Expand Down
1 change: 0 additions & 1 deletion app/appsettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ class AppSettings: public QObject
QString ignoreMigrateVersion() const;
void setIgnoreMigrateVersion( const QString &version );

static const QString INPUTAPP_GROUP_NAME;
static const QString POSITION_PROVIDERS_GROUP;

public slots:
Expand Down
1 change: 1 addition & 0 deletions app/inputhelp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ QVector<QString> InputHelp::logHeader( bool isHtml )
{
QVector<QString> retLines;
retLines.push_back( QStringLiteral( "Input App: %1 - %2 (%3)" ).arg( CoreUtils::appVersion() ).arg( InputUtils::appPlatform() ).arg( CoreUtils::appVersionCode() ) );
retLines.push_back( QStringLiteral( "Device UUID: %1" ).arg( CoreUtils::deviceUuid() ) );
retLines.push_back( QStringLiteral( "Data Dir: %1" ).arg( InputUtils::appDataDir() ) );
retLines.push_back( QStringLiteral( "System: %1" ).arg( QSysInfo::prettyProductName() ) );
retLines.push_back( QStringLiteral( "Mergin URL: %1" ).arg( mMerginApi->apiRoot() ) );
Expand Down
1 change: 1 addition & 0 deletions app/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,7 @@ int main( int argc, char *argv[] )
#endif
qDebug() << "Mergin Maps Input App" << version << InputUtils::appPlatform() << "(" << CoreUtils::appVersionCode() << ")";
qDebug() << "Built with QGIS " << VERSION_INT << " and QT " << qVersion();
qDebug() << "Device uuid " << CoreUtils::deviceUuid();

// Set/Get enviroment
QString dataDir = getDataDir();
Expand Down
5 changes: 3 additions & 2 deletions app/test/testposition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

#include "qgsapplication.h"
#include "appsettings.h"
#include "coreutils.h"
#include "position/positionkit.h"
#include "position/providers/simulatedpositionprovider.h"

Expand Down Expand Up @@ -261,11 +262,11 @@ void TestPosition::testPositionProviderKeysInSettings()
QCOMPARE( positionKit->positionProvider()->name(), "testProviderA" );
QCOMPARE( positionKit->positionProvider()->type(), "external" );

QCOMPARE( rawSettings.value( AppSettings::INPUTAPP_GROUP_NAME + "/activePositionProviderId" ).toString(), "AA:BB:CC:DD:EE:FF" );
QCOMPARE( rawSettings.value( CoreUtils::QSETTINGS_APP_GROUP_NAME + "/activePositionProviderId" ).toString(), "AA:BB:CC:DD:EE:FF" );

positionKit->setPositionProvider( positionKit->constructProvider( "internal", "devicegps" ) );

QCOMPARE( rawSettings.value( AppSettings::INPUTAPP_GROUP_NAME + "/activePositionProviderId" ).toString(), "devicegps" );
QCOMPARE( rawSettings.value( CoreUtils::QSETTINGS_APP_GROUP_NAME + "/activePositionProviderId" ).toString(), "devicegps" );

// even without appSettings provider model should have two items in desktop build: simulated and internal provider
PositionProvidersModel providersModel;
Expand Down
30 changes: 28 additions & 2 deletions core/coreutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

#include <QDateTime>
#include <QDebug>
#include <QUuid>
#include <QSettings>
#include <QDir>
#include <QFile>
#include <QDirIterator>
Expand All @@ -21,15 +23,39 @@

#include "qcoreapplication.h"

const QString CoreUtils::QSETTINGS_APP_GROUP_NAME = QStringLiteral( "inputApp" );
const QString CoreUtils::LOG_TO_DEVNULL = QStringLiteral();
const QString CoreUtils::LOG_TO_STDOUT = QStringLiteral( "TO_STDOUT" );
QString CoreUtils::sLogFile = CoreUtils::LOG_TO_DEVNULL;
int CoreUtils::CHECKSUM_CHUNK_SIZE = 65536;

QString CoreUtils::deviceUuid()
{
QString uuid;

QSettings settings;
settings.beginGroup( QSETTINGS_APP_GROUP_NAME );
QVariant uuidEntry = settings.value( "deviceUuid" );
if ( uuidEntry.isNull() )
{
uuid = uuidWithoutBraces( QUuid::createUuid() );
CoreUtils::log( QStringLiteral( "Device" ), QStringLiteral( "deviceUuid generated: %1" ).arg( uuid ) );
settings.setValue( "deviceUuid", uuid );
}
else
{
uuid = uuidEntry.toString();
}
settings.endGroup();

Q_ASSERT( !uuid.isEmpty() );
return uuid;
}

QString CoreUtils::appInfo()
{
return QString( "%1/%2 (%3/%4)" ).arg( QCoreApplication::applicationName() ).arg( QCoreApplication::applicationVersion() )
.arg( QSysInfo::productType() ).arg( QSysInfo::productVersion() );
return QString( "%1/%2 (%3/%4) %5" ).arg( QCoreApplication::applicationName() ).arg( QCoreApplication::applicationVersion() )
.arg( QSysInfo::productType() ).arg( QSysInfo::productVersion() ).arg( deviceUuid() );
}

QString CoreUtils::appVersion()
Expand Down
7 changes: 7 additions & 0 deletions core/coreutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,13 @@ class CoreUtils
*/
static QString nameAbbr( const QString &name, const QString &email );

/**
* Returns unique identifier of the device
* The UUID is stored in QSettings and is randomly generated on first app run.
*/
static QString deviceUuid();

static const QString QSETTINGS_APP_GROUP_NAME;
private:
static QString sLogFile;
static int CHECKSUM_CHUNK_SIZE;
Expand Down

0 comments on commit dcabf91

Please sign in to comment.