Add a utility method for getting client platform tags from UA strings for metrics.
This commit is contained in:
parent
7ba689aaeb
commit
e524ff965d
|
@ -64,6 +64,18 @@ public class UserAgentTagUtil {
|
|||
}
|
||||
}
|
||||
|
||||
public static Tag getPlatformTag(final String userAgentString) {
|
||||
String platform;
|
||||
|
||||
try {
|
||||
platform = UserAgentUtil.parseUserAgentString(userAgentString).getPlatform().name().toLowerCase();
|
||||
} catch (final UnrecognizedUserAgentException e) {
|
||||
platform = "unrecognized";
|
||||
}
|
||||
|
||||
return Tag.of(PLATFORM_TAG, platform);
|
||||
}
|
||||
|
||||
private static boolean allowVersion(final ClientPlatform platform, final Semver version) {
|
||||
final Pair<ClientPlatform, Semver> platformAndVersion = new Pair<>(platform, version);
|
||||
|
||||
|
|
|
@ -66,4 +66,29 @@ public class UserAgentTagUtilTest {
|
|||
assertTrue(tags.contains(Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android")));
|
||||
assertTrue(tags.contains(Tag.of(UserAgentTagUtil.VERSION_TAG, "4.0.0")));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Parameters(method = "argumentsForTestGetPlatformTag")
|
||||
public void testGetPlatformTag(final String userAgent, final Tag expectedTag) {
|
||||
assertEquals(expectedTag, UserAgentTagUtil.getPlatformTag(userAgent));
|
||||
}
|
||||
|
||||
private Object argumentsForTestGetPlatformTag() {
|
||||
return new Object[] {
|
||||
new Object[] { "This is obviously not a reasonable User-Agent string.", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized") },
|
||||
new Object[] { null, Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized") },
|
||||
new Object[] { "Signal-Android 4.53.7 (Android 8.1)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal Desktop 1.2.3", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal/3.9.0 (iPhone; iOS 12.2; Scale/3.00)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "ios") },
|
||||
new Object[] { "Signal-Android 1.2.3 (Android 8.1)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal Desktop 3.9.0", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal/4.53.7 (iPhone; iOS 12.2; Scale/3.00)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "ios") },
|
||||
new Object[] { "Signal-Android 4.68.3 (Android 9)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal-Android 1.2.3 (Android 4.3)", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal-Android 4.68.3.0-bobsbootlegclient", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android") },
|
||||
new Object[] { "Signal Desktop 1.22.45-foo-0", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal Desktop 1.34.5-beta.1-fakeclientemporium", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
new Object[] { "Signal Desktop 1.32.0-beta.3", Tag.of(UserAgentTagUtil.PLATFORM_TAG, "desktop") },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue