Remove parsing of the OS version in case of web/desktop sessions

This commit is contained in:
Maxime NATUREL 2022-10-10 15:58:21 +02:00
parent 8cd8c65442
commit daa5f88899
2 changed files with 19 additions and 43 deletions

View File

@ -135,38 +135,14 @@ class ParseDeviceUserAgentUseCase @Inject constructor() {
val secondSegment = deviceOperatingSystemSegments.getOrNull(1).orEmpty() val secondSegment = deviceOperatingSystemSegments.getOrNull(1).orEmpty()
return when { return when {
firstSegment.startsWith(OPERATING_SYSTEM_MAC_KEYWORD) -> { // e.g. (Macintosh; Intel Mac OS X 10_15_7) => macOS
// e.g. (Macintosh; Intel Mac OS X 10_15_7) => macOS 10.15.7 firstSegment.startsWith(OPERATING_SYSTEM_MAC_KEYWORD) -> OPERATING_SYSTEM_MAC
val version = secondSegment // e.g. (Windows NT 10.0; Win64; x64) => Windows
.substringAfterLast(" ") firstSegment.startsWith(OPERATING_SYSTEM_WINDOWS_KEYWORD) -> OPERATING_SYSTEM_WINDOWS_KEYWORD
.replace("_", ".") // e.g. (iPad; CPU OS 8_4_1 like Mac OS X) => iOS
if (version.isEmpty()) { firstSegment.startsWith(DEVICE_IPAD_KEYWORD) || firstSegment.startsWith(DEVICE_IPHONE_KEYWORD) -> OPERATING_SYSTEM_IOS
OPERATING_SYSTEM_MAC // e.g. (Linux; Android 9; SM-G973U Build/PPR1.180610.011) => Android
} else { secondSegment.startsWith(OPERATING_SYSTEM_ANDROID_KEYWORD) -> OPERATING_SYSTEM_ANDROID_KEYWORD
"$OPERATING_SYSTEM_MAC $version"
}
}
firstSegment.startsWith(OPERATING_SYSTEM_WINDOWS_KEYWORD) -> {
// e.g. (Windows NT 10.0; Win64; x64) => Windows 10.0
firstSegment.replace("NT ", "")
}
firstSegment.startsWith(DEVICE_IPAD_KEYWORD) || firstSegment.startsWith(DEVICE_IPHONE_KEYWORD) -> {
// e.g. (iPad; CPU OS 8_4_1 like Mac OS X) => macOS 8.4.1
val version = secondSegment
.split(" ")
.find { it.contains("_") }
?.replace("_", ".")
.orEmpty()
if (version.isEmpty()) {
OPERATING_SYSTEM_IOS
} else {
"$OPERATING_SYSTEM_IOS $version"
}
}
secondSegment.startsWith(OPERATING_SYSTEM_ANDROID_KEYWORD) -> {
// e.g. (Linux; Android 9; SM-G973U Build/PPR1.180610.011) => Android 9
secondSegment
}
else -> null else -> null
} }
} }

View File

@ -62,8 +62,8 @@ private val A_USER_AGENT_LIST_FOR_DESKTOP = listOf(
"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) ElementNightly/2022091301 Chrome/104.0.5112.102 Electron/20.1.1 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) ElementNightly/2022091301 Chrome/104.0.5112.102 Electron/20.1.1 Safari/537.36",
) )
private val AN_EXPECTED_RESULT_LIST_FOR_DESKTOP = listOf( private val AN_EXPECTED_RESULT_LIST_FOR_DESKTOP = listOf(
DeviceExtendedInfo(DeviceType.DESKTOP, null, "macOS 10.15.7", "Electron", "20.1.1"), DeviceExtendedInfo(DeviceType.DESKTOP, null, "macOS", "Electron", "20.1.1"),
DeviceExtendedInfo(DeviceType.DESKTOP, null, "Windows 10.0", "Electron", "20.1.1"), DeviceExtendedInfo(DeviceType.DESKTOP, null, "Windows", "Electron", "20.1.1"),
) )
private val A_USER_AGENT_LIST_FOR_WEB = listOf( private val A_USER_AGENT_LIST_FOR_WEB = listOf(
@ -78,15 +78,15 @@ private val A_USER_AGENT_LIST_FOR_WEB = listOf(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246",
) )
private val AN_EXPECTED_RESULT_LIST_FOR_WEB = listOf( private val AN_EXPECTED_RESULT_LIST_FOR_WEB = listOf(
DeviceExtendedInfo(DeviceType.WEB, null, "macOS 10.15.7", "Chrome", "104.0.5112.102"), DeviceExtendedInfo(DeviceType.WEB, null, "macOS", "Chrome", "104.0.5112.102"),
DeviceExtendedInfo(DeviceType.WEB, null, "Windows 10.0", "Chrome", "104.0.5112.102"), DeviceExtendedInfo(DeviceType.WEB, null, "Windows", "Chrome", "104.0.5112.102"),
DeviceExtendedInfo(DeviceType.WEB, null, "macOS 10.10", "Firefox", "39.0"), DeviceExtendedInfo(DeviceType.WEB, null, "macOS", "Firefox", "39.0"),
DeviceExtendedInfo(DeviceType.WEB, null, "macOS 10.10.2", "Safari", "8.0.3"), DeviceExtendedInfo(DeviceType.WEB, null, "macOS", "Safari", "8.0.3"),
DeviceExtendedInfo(DeviceType.WEB, null, "Android 9", "Chrome", "69.0.3497.100"), DeviceExtendedInfo(DeviceType.WEB, null, "Android", "Chrome", "69.0.3497.100"),
DeviceExtendedInfo(DeviceType.WEB, null, "iOS 8.4.1", "Safari", "8.0"), DeviceExtendedInfo(DeviceType.WEB, null, "iOS", "Safari", "8.0"),
DeviceExtendedInfo(DeviceType.WEB, null, "iOS 8.4.1", "Safari", "8.0"), DeviceExtendedInfo(DeviceType.WEB, null, "iOS", "Safari", "8.0"),
DeviceExtendedInfo(DeviceType.WEB, null, "Windows 6.0", "Firefox", "40.0"), DeviceExtendedInfo(DeviceType.WEB, null, "Windows", "Firefox", "40.0"),
DeviceExtendedInfo(DeviceType.WEB, null, "Windows 10.0", "Edge", "12.246"), DeviceExtendedInfo(DeviceType.WEB, null, "Windows", "Edge", "12.246"),
) )
private val AN_UNKNOWN_USER_AGENT_LIST = listOf( private val AN_UNKNOWN_USER_AGENT_LIST = listOf(