MM-61012 Add special handling to OS detection for mobile apps (#29139)

* Stop recording unknown platforms as "Windows" in Sessions table

* Add more tests to user_agent_test.go

* MM-61012 Add special handling to OS detection for mobile apps

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Harrison Healey
2024-11-15 12:25:28 -05:00
коммит произвёл GitHub
родитель 9c5c394c56
Коммит 207503185e
3 изменённых файлов: 75 добавлений и 8 удалений

Просмотреть файл

@@ -13,7 +13,7 @@ import (
const maxUserAgentVersionLength = 128
var platformNames = map[uasurfer.Platform]string{
uasurfer.PlatformUnknown: "Windows",
uasurfer.PlatformUnknown: "Unknown",
uasurfer.PlatformWindows: "Windows",
uasurfer.PlatformMac: "Macintosh",
uasurfer.PlatformLinux: "Linux",
@@ -24,9 +24,19 @@ var platformNames = map[uasurfer.Platform]string{
uasurfer.PlatformWindowsPhone: "Windows Phone",
}
func getPlatformName(ua *uasurfer.UserAgent) string {
func getPlatformName(ua *uasurfer.UserAgent, userAgentString string) string {
platform := ua.OS.Platform
if platform == uasurfer.PlatformUnknown && strings.Contains(userAgentString, "Mattermost Mobile/") {
if strings.Contains(userAgentString, "iPhone") {
platform = uasurfer.PlatformiPhone
} else if strings.Contains(userAgentString, "iPad") {
platform = uasurfer.PlatformiPad
} else {
platform = uasurfer.PlatformLinux
}
}
name, ok := platformNames[platform]
if !ok {
return platformNames[uasurfer.PlatformUnknown]
@@ -48,7 +58,7 @@ var osNames = map[uasurfer.OSName]string{
uasurfer.OSLinux: "Linux",
}
func getOSName(ua *uasurfer.UserAgent) string {
func getOSName(ua *uasurfer.UserAgent, userAgentString string) string {
os := ua.OS
if os.Name == uasurfer.OSWindows {
@@ -77,7 +87,19 @@ func getOSName(ua *uasurfer.UserAgent) string {
}
}
name, ok := osNames[os.Name]
osName := os.Name
if osName == uasurfer.OSUnknown && strings.Contains(userAgentString, "Mattermost Mobile/") {
if strings.Contains(userAgentString, "iPhone") {
osName = uasurfer.OSiOS
} else if strings.Contains(userAgentString, "iPad") {
osName = uasurfer.OSiOS
} else {
osName = uasurfer.OSAndroid
}
}
name, ok := osNames[osName]
if ok {
return name
}