From 97dcd3e8f21405546b14724e35f83f6f861f9057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Ma=C5=82opolski?= Date: Wed, 20 Nov 2024 15:11:01 +0100 Subject: [PATCH 1/2] Add to RingPublishingTrackingConfiguration new property environment to set client environment for the tracking configuration. --- Changelogs/1.6.6 | 6 +++++ .../RingPublishingTrackingConfiguration.kt | 3 +++ .../tracking/internal/ConfigurationManager.kt | 4 ++- .../tracking/internal/data/Client.kt | 3 ++- .../tracking/internal/data/Environment.kt | 26 +++++++++++++++++++ .../internal/decorator/ClientDecorator.kt | 6 +++-- .../internal/decorator/EventDecorator.kt | 2 +- .../test/java/RingPublishingTrackingTest.kt | 2 ++ .../decorator/ContentUrlDecoratorTest.kt | 13 +++++++--- .../internal/decorator/EventDecoratorTest.kt | 2 ++ .../decorator/SecondaryIdDecoratorTest.kt | 4 +++ .../decorator/SiteAreaDecoratorTest.kt | 7 +++-- .../decorator/StructurePathDecoratorTest.kt | 10 ++++--- .../tracking/demo/DemoApplication.kt | 4 ++- gradle.properties | 4 +-- 15 files changed, 79 insertions(+), 17 deletions(-) create mode 100644 Changelogs/1.6.6 create mode 100644 RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Environment.kt diff --git a/Changelogs/1.6.6 b/Changelogs/1.6.6 new file mode 100644 index 0000000..b9fb22d --- /dev/null +++ b/Changelogs/1.6.6 @@ -0,0 +1,6 @@ +1.6.6 Release notes (2024-11-20) +================================ + +### Changes + +* Add to 'RingPublishingTrackingConfiguration' new property 'environment' to set client environment for the tracking configuration. diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/data/RingPublishingTrackingConfiguration.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/data/RingPublishingTrackingConfiguration.kt index b6dbf77..833eefa 100644 --- a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/data/RingPublishingTrackingConfiguration.kt +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/data/RingPublishingTrackingConfiguration.kt @@ -6,6 +6,7 @@ package com.ringpublishing.tracking.data import com.ringpublishing.tracking.internal.constants.Constants +import com.ringpublishing.tracking.internal.data.Environment import java.net.URL /** @@ -17,6 +18,7 @@ import java.net.URL * @property applicationRootPath Application root path, for example app name like "onet" or "blick". * @property applicationDefaultStructurePath Application default area, for example "home_screen", "undefined" by default * @property applicationDefaultAdvertisementArea Default ad space name of the application, + * @property environment Environment of the client. * For example "ads/list/sport", "undefined" by default */ data class RingPublishingTrackingConfiguration( @@ -26,4 +28,5 @@ data class RingPublishingTrackingConfiguration( val applicationRootPath: String, val applicationDefaultStructurePath: List = Constants.applicationDefaultStructurePath, val applicationDefaultAdvertisementArea: String = Constants.applicationDefaultAdvertisementArea, + val environment: Environment ) diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/ConfigurationManager.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/ConfigurationManager.kt index 5e7aeb2..cb639a5 100644 --- a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/ConfigurationManager.kt +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/ConfigurationManager.kt @@ -20,7 +20,7 @@ import java.net.URL internal class ConfigurationManager { - internal lateinit var ringPublishingTrackingConfiguration: RingPublishingTrackingConfiguration + internal lateinit var ringPublishingTrackingConfiguration: RingPublishingTrackingConfiguration private set private val idGenerator = IdGenerator() @@ -47,6 +47,8 @@ internal class ConfigurationManager var secondaryId: String? = null + val environment get() = ringPublishingTrackingConfiguration.environment + fun initializeConfiguration(ringPublishingTrackingConfiguration: RingPublishingTrackingConfiguration) { this.ringPublishingTrackingConfiguration = ringPublishingTrackingConfiguration diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Client.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Client.kt index 7e66546..c6ef41b 100644 --- a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Client.kt +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Client.kt @@ -6,4 +6,5 @@ package com.ringpublishing.tracking.internal.data -class Client(val client: ClientType) +class Client(val client: ClientType, val environment: Environment) + diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Environment.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Environment.kt new file mode 100644 index 0000000..ace0486 --- /dev/null +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/data/Environment.kt @@ -0,0 +1,26 @@ +/* + * Created by Grzegorz Małopolski on 4/12/22, 9:56 AM + * Copyright © 2021 Ringier Axel Springer Tech. All rights reserved. + * + */ + +package com.ringpublishing.tracking.internal.data + +import com.google.gson.annotations.SerializedName + +/** + * Enum class representing environment of the client + * @property Production production environment + * @property Integration integration environment + * @property Development development environment + */ +enum class Environment +{ + @SerializedName("prod") + Production, + @SerializedName("int") + Integration, + @SerializedName("dev") + Development +} + diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt index cd8159e..5fcddfe 100644 --- a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt @@ -9,15 +9,17 @@ package com.ringpublishing.tracking.internal.decorator import android.util.Base64 import com.google.gson.Gson import com.ringpublishing.tracking.data.Event +import com.ringpublishing.tracking.internal.ConfigurationManager import com.ringpublishing.tracking.internal.data.Client import com.ringpublishing.tracking.internal.data.ClientPlatform import com.ringpublishing.tracking.internal.data.ClientType +import com.ringpublishing.tracking.internal.data.Environment import com.ringpublishing.tracking.internal.log.Logger import java.io.UnsupportedEncodingException -internal class ClientDecorator(private val gson: Gson) : BaseDecorator() +internal class ClientDecorator(private val gson: Gson, configurationManager: ConfigurationManager) : BaseDecorator() { - private val client = Client(ClientType(ClientPlatform.native_app)) + private val client = Client(ClientType(ClientPlatform.native_app), configurationManager.environment) override fun decorate(event: Event) { diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/EventDecorator.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/EventDecorator.kt index 6b55316..b1fa8ef 100644 --- a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/EventDecorator.kt +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/EventDecorator.kt @@ -38,7 +38,7 @@ internal class EventDecorator( add(ContentUrlDecorator(configurationManager)) add(StructurePathDecorator(configurationManager)) add(ReferrerDecorator(configurationManager)) - add(ClientDecorator(gson)) + add(ClientDecorator(gson, configurationManager)) } Logger.debug("Decorators for event: $decorators") diff --git a/RingPublishingTracking/src/test/java/RingPublishingTrackingTest.kt b/RingPublishingTracking/src/test/java/RingPublishingTrackingTest.kt index 59fea4c..df4458e 100644 --- a/RingPublishingTracking/src/test/java/RingPublishingTrackingTest.kt +++ b/RingPublishingTracking/src/test/java/RingPublishingTrackingTest.kt @@ -11,6 +11,7 @@ import android.view.Display import android.view.WindowManager import com.ringpublishing.tracking.data.RingPublishingTrackingConfiguration import com.ringpublishing.tracking.delegate.RingPublishingTrackingDelegate +import com.ringpublishing.tracking.internal.data.Environment import com.ringpublishing.tracking.internal.log.Logger import io.mockk.MockKAnnotations import io.mockk.every @@ -89,6 +90,7 @@ internal class RingPublishingTrackingTest every { ringPublishingTrackingConfiguration.applicationRootPath } returns "" every { ringPublishingTrackingConfiguration.applicationDefaultAdvertisementArea } returns "" every { ringPublishingTrackingConfiguration.applicationDefaultStructurePath } returns emptyList() + every { ringPublishingTrackingConfiguration.environment } returns Environment.Development RingPublishingTracking.initialize(context, ringPublishingTrackingConfiguration, ringPublishingTrackingDelegate) } diff --git a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/ContentUrlDecoratorTest.kt b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/ContentUrlDecoratorTest.kt index d2eaa62..5b03806 100644 --- a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/ContentUrlDecoratorTest.kt +++ b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/ContentUrlDecoratorTest.kt @@ -9,6 +9,7 @@ package com.ringpublishing.tracking.internal.decorator import com.ringpublishing.tracking.data.Event import com.ringpublishing.tracking.data.RingPublishingTrackingConfiguration import com.ringpublishing.tracking.internal.ConfigurationManager +import com.ringpublishing.tracking.internal.data.Environment import com.ringpublishing.tracking.internal.log.Logger import io.mockk.MockKAnnotations import org.junit.Assert @@ -36,7 +37,8 @@ class ContentUrlDecoratorTest URL("https://domain.com"), "rootPath", listOf("path1", "path2"), - "area" + "area", + Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) @@ -62,7 +64,8 @@ class ContentUrlDecoratorTest URL("https://domain.com"), "rootPath", listOf("path1", "path2", "path3", "path4", "path5"), - "area" + "area", + Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) @@ -88,7 +91,8 @@ class ContentUrlDecoratorTest URL("https://domain.com"), "rootPath/", listOf("path1", "path2"), - "area" + "area", + Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) val contentUrlDecorator = ContentUrlDecorator(configurationManager) @@ -112,7 +116,8 @@ class ContentUrlDecoratorTest URL("https://domain.com"), "rootPath", listOf("path1", "path2"), - "area" + "area", + Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) diff --git a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/EventDecoratorTest.kt b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/EventDecoratorTest.kt index 873e7be..ff49cbb 100644 --- a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/EventDecoratorTest.kt +++ b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/EventDecoratorTest.kt @@ -16,6 +16,7 @@ import com.ringpublishing.tracking.internal.ConfigurationManager import com.ringpublishing.tracking.internal.api.response.ArtemisIdResponse import com.ringpublishing.tracking.internal.api.response.Id import com.ringpublishing.tracking.internal.api.response.User +import com.ringpublishing.tracking.internal.data.Environment import com.ringpublishing.tracking.internal.data.UserData import com.ringpublishing.tracking.internal.device.WindowSizeInfo import com.ringpublishing.tracking.internal.log.Logger @@ -205,6 +206,7 @@ internal class EventDecoratorTest every { configurationManager.currentContentUrl } returns "contentUrl" every { configurationManager.getFullStructurePath() } returns "structurePath" every { configurationManager.currentReferrer } returns "referrer" + every { configurationManager.environment } returns Environment.Development every { screenSizeInfo.getScreenSizeDpString() } returns "1x1" every { windowSizeInfo.getWindowSizeDpString() } returns "1x1" every { sharedPreferences.getString(any(), any()) } returns "preference" diff --git a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SecondaryIdDecoratorTest.kt b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SecondaryIdDecoratorTest.kt index ed766ac..769de29 100644 --- a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SecondaryIdDecoratorTest.kt +++ b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SecondaryIdDecoratorTest.kt @@ -9,6 +9,7 @@ package com.ringpublishing.tracking.internal.decorator import com.ringpublishing.tracking.data.Event import com.ringpublishing.tracking.data.RingPublishingTrackingConfiguration import com.ringpublishing.tracking.internal.ConfigurationManager +import com.ringpublishing.tracking.internal.data.Environment import com.ringpublishing.tracking.internal.log.Logger import io.mockk.MockKAnnotations import org.junit.Assert @@ -35,6 +36,7 @@ class SecondaryIdDecoratorTest "", URL("https://domain.com"), "rootPath", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) val secondaryIdDecorator = SecondaryIdDecorator(configurationManager) @@ -55,6 +57,7 @@ class SecondaryIdDecoratorTest "", URL("https://domain.com"), "rootPath", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) val secondaryIdDecorator = SecondaryIdDecorator(configurationManager) @@ -78,6 +81,7 @@ class SecondaryIdDecoratorTest "", URL("https://domain.com"), "rootPath", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) val secondaryIdDecorator = SecondaryIdDecorator(configurationManager) diff --git a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SiteAreaDecoratorTest.kt b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SiteAreaDecoratorTest.kt index 0dff56e..06a7cae 100644 --- a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SiteAreaDecoratorTest.kt +++ b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/SiteAreaDecoratorTest.kt @@ -9,6 +9,7 @@ package com.ringpublishing.tracking.internal.decorator import com.ringpublishing.tracking.data.Event import com.ringpublishing.tracking.data.RingPublishingTrackingConfiguration import com.ringpublishing.tracking.internal.ConfigurationManager +import com.ringpublishing.tracking.internal.data.Environment import org.junit.Assert import org.junit.Test import java.net.URL @@ -41,7 +42,8 @@ class SiteAreaDecoratorTest URL("https://domain.com"), "", emptyList(), - "defaultArea" + "defaultArea", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) val decorator = SiteAreaDecorator(configurationManager) @@ -64,7 +66,8 @@ class SiteAreaDecoratorTest URL("https://domain.com"), "", emptyList(), - "defaultArea" + "defaultArea", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) configurationManager.updateAdvertisementArea("area") diff --git a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/StructurePathDecoratorTest.kt b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/StructurePathDecoratorTest.kt index 793d8ee..94db094 100644 --- a/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/StructurePathDecoratorTest.kt +++ b/RingPublishingTracking/src/test/java/com/ringpublishing/tracking/internal/decorator/StructurePathDecoratorTest.kt @@ -9,6 +9,7 @@ package com.ringpublishing.tracking.internal.decorator import com.ringpublishing.tracking.data.Event import com.ringpublishing.tracking.data.RingPublishingTrackingConfiguration import com.ringpublishing.tracking.internal.ConfigurationManager +import com.ringpublishing.tracking.internal.data.Environment import org.junit.Assert import org.junit.Test import java.net.URL @@ -26,7 +27,8 @@ class StructurePathDecoratorTest URL("https://domain.com"), "rootPath", listOf("path1", "path2"), - "area" + "area", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) configurationManager.updateStructurePath(listOf("path3", "path4"), partiallyReloaded = false) @@ -52,7 +54,8 @@ class StructurePathDecoratorTest URL("https://domain.com"), "rootPath", listOf("path1", "path2"), - "area" + "area", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) @@ -78,7 +81,8 @@ class StructurePathDecoratorTest URL("https://domain.com"), "rootPath/", listOf("path1", "path2"), - "area" + "area", + environment = Environment.Development ) configurationManager.initializeConfiguration(ringPublishingTrackingConfiguration) val decorator = StructurePathDecorator(configurationManager) diff --git a/demo/src/main/java/com/ringpublishing/tracking/demo/DemoApplication.kt b/demo/src/main/java/com/ringpublishing/tracking/demo/DemoApplication.kt index 0143903..62c5965 100644 --- a/demo/src/main/java/com/ringpublishing/tracking/demo/DemoApplication.kt +++ b/demo/src/main/java/com/ringpublishing/tracking/demo/DemoApplication.kt @@ -10,6 +10,7 @@ import com.ringpublishing.tracking.data.RingPublishingTrackingConfiguration import com.ringpublishing.tracking.data.TrackingIdentifier import com.ringpublishing.tracking.delegate.RingPublishingTrackingDelegate import com.ringpublishing.tracking.demo.logger.DemoAppLogger +import com.ringpublishing.tracking.internal.data.Environment class DemoApplication : MultiDexApplication() { @@ -47,7 +48,8 @@ class DemoApplication : MultiDexApplication() apiKey = apiKey, applicationRootPath = applicationRootPath, applicationDefaultStructurePath = applicationDefaultStructurePath, - applicationDefaultAdvertisementArea = applicationDefaultAdvertisementArea + applicationDefaultAdvertisementArea = applicationDefaultAdvertisementArea, + environment = Environment.Development ) // Optional enable debug mode, that print debug logs diff --git a/gradle.properties b/gradle.properties index d5a9664..8861401 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,6 +8,6 @@ android.useAndroidX=true android.enableJetifier=true #Library version name -sdk_version_name=1.6.5 +sdk_version_name=1.6.6 #Library version code -sdk_version_code=24 \ No newline at end of file +sdk_version_code=25 \ No newline at end of file From 0504674c8cbf2658e9cd86459612aaeb4b655003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Ma=C5=82opolski?= Date: Wed, 20 Nov 2024 15:20:20 +0100 Subject: [PATCH 2/2] Import --- .../tracking/internal/decorator/ClientDecorator.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt index 5fcddfe..43d5983 100644 --- a/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt +++ b/RingPublishingTracking/src/main/java/com/ringpublishing/tracking/internal/decorator/ClientDecorator.kt @@ -13,7 +13,6 @@ import com.ringpublishing.tracking.internal.ConfigurationManager import com.ringpublishing.tracking.internal.data.Client import com.ringpublishing.tracking.internal.data.ClientPlatform import com.ringpublishing.tracking.internal.data.ClientType -import com.ringpublishing.tracking.internal.data.Environment import com.ringpublishing.tracking.internal.log.Logger import java.io.UnsupportedEncodingException