diff --git a/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp b/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp index edaf813cd8..4ad4e70be4 100644 --- a/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp +++ b/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp @@ -47,8 +47,6 @@ CEditorPreferencesPage_AWS::CEditorPreferencesPage_AWS() { m_settingsRegistry = AZStd::make_unique(); InitializeSettings(); - - // TODO Update with AWS svg. m_icon = QIcon(":/res/AWS_preferences_icon.svg"); } diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSAttributionServiceApi.h b/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSAttributionServiceApi.h index d14e51589c..cee3574f4d 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSAttributionServiceApi.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSAttributionServiceApi.h @@ -43,7 +43,7 @@ namespace AWSCore bool UseAWSCredentials() { - return false; + return true; } //! Request body for the service API request. diff --git a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp index e7a6828903..d667bfb2cf 100644 --- a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp +++ b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp @@ -25,20 +25,24 @@ #include #include +#include +#include + namespace AWSCore { - static constexpr const char* EngineVersionJsonKey = "O3DEVersion"; + constexpr const char* EngineVersionJsonKey = "O3DEVersion"; constexpr char EditorAWSPreferencesFileName[] = "editor_aws_preferences.setreg"; constexpr char AWSAttributionSettingsPrefixKey[] = "/Amazon/AWS/Preferences"; constexpr char AWSAttributionEnabledKey[] = "/Amazon/AWS/Preferences/AWSAttributionEnabled"; constexpr char AWSAttributionDelaySecondsKey[] = "/Amazon/AWS/Preferences/AWSAttributionDelaySeconds"; constexpr char AWSAttributionLastTimeStampKey[] = "/Amazon/AWS/Preferences/AWSAttributionLastTimeStamp"; - constexpr char AWSAttributionApiId[] = "xbzx78kvbk"; + constexpr char AWSAttributionApiId[] = "2zxvvmv8d7"; constexpr char AWSAttributionChinaApiId[] = ""; constexpr char AWSAttributionApiStage[] = "prod"; + const int AWSAttributionDefaultDelayInDays = 7; AWSAttributionManager::AWSAttributionManager() { @@ -58,12 +62,11 @@ namespace AWSCore { if (ShouldGenerateMetric()) { - // 1. Gather metadata and assemble metric + // Gather metadata and assemble metric AttributionMetric metric; UpdateMetric(metric); - // 2. Identify region and chose attribution endpoint - // 3. Post metric + // Post metric SubmitMetric(metric); } } @@ -104,8 +107,7 @@ namespace AWSCore AZ::u64 delayInSeconds = 0; if (!m_settingsRegistry->Get(delayInSeconds, AWSAttributionDelaySecondsKey)) { - AZ_Warning("AWSAttributionManager", false, "AWSAttribution delay key not found. Defaulting to delay to day"); - delayInSeconds = 86400; + delayInSeconds = 86400 * AWSAttributionDefaultDelayInDays; m_settingsRegistry->Set(AWSAttributionDelaySecondsKey, delayInSeconds); } @@ -243,7 +245,8 @@ namespace AWSCore metric.SetO3DEVersion(engineVersion); AZStd::string platform = this->GetPlatform(); - metric.SetPlatform(platform, ""); + QString productName = QSysInfo::prettyProductName(); + metric.SetPlatform(platform, productName.toStdString().c_str()); AZStd::vector gemNames; GetActiveAWSGems(gemNames); @@ -256,6 +259,7 @@ namespace AWSCore void AWSAttributionManager::SubmitMetric(AttributionMetric& metric) { AWSCore::ServiceAPI::AWSAttributionRequestJob::Config* config = ServiceAPI::AWSAttributionRequestJob::GetDefaultConfig(); + // Identify region and chose attribution endpoint SetApiEndpointAndRegion(config); ServiceAPI::AWSAttributionRequestJob* requestJob = ServiceAPI::AWSAttributionRequestJob::Create( @@ -266,7 +270,12 @@ namespace AWSCore UpdateLastSend(); AZ_Printf("AWSAttributionManager", "AWSAttribution metric submit success"); - }, {}, config); + }, + [this](ServiceAPI::AWSAttributionRequestJob* failJob) + { + AZ_Error("AWSAttributionManager", false, "Metrics send error: %s", failJob->error.message.c_str()); + }, + config); requestJob->parameters.metric = metric; requestJob->Start(); diff --git a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionMetric.cpp b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionMetric.cpp index 6ad322995e..683482b8f6 100644 --- a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionMetric.cpp +++ b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionMetric.cpp @@ -19,14 +19,16 @@ namespace AWSCore { + constexpr char AWSAttributionMetricDefaultO3DEVersion[] = "1.1"; + AttributionMetric::AttributionMetric(const AZStd::string& timestamp) - : m_version("1.1") + : m_version(AWSAttributionMetricDefaultO3DEVersion) , m_timestamp(timestamp) { } AttributionMetric::AttributionMetric() - : m_version("1.1") + : m_version(AWSAttributionMetricDefaultO3DEVersion) { m_timestamp = AttributionMetric::GenerateTimeStamp(); } diff --git a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp index 298c250086..be6a0a5ae8 100644 --- a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp +++ b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp @@ -32,6 +32,8 @@ #include #include +#include +#include using namespace AWSCore; @@ -405,6 +407,7 @@ namespace AWSAttributionUnitTest AZStd::string serializedMetricValue = metric.SerializeToJson(); ASSERT_TRUE(serializedMetricValue.find("\"o3de_version\":\"1.0.0.0\"") != AZStd::string::npos); ASSERT_TRUE(serializedMetricValue.find(AZ::GetPlatformName(AZ::g_currentPlatform)) != AZStd::string::npos); + ASSERT_TRUE(serializedMetricValue.find(QSysInfo::prettyProductName().toStdString().c_str()) != AZStd::string::npos); ASSERT_TRUE(serializedMetricValue.find("AWSCore.Editor") != AZStd::string::npos); ASSERT_TRUE(serializedMetricValue.find("AWSClientAuth") != AZStd::string::npos);