diff --git a/src/main/java/com/stripe/net/HttpClient.java b/src/main/java/com/stripe/net/HttpClient.java index 60c5f3e607b..1f4a3019f74 100644 --- a/src/main/java/com/stripe/net/HttpClient.java +++ b/src/main/java/com/stripe/net/HttpClient.java @@ -201,15 +201,7 @@ protected static String buildXStripeClientUserAgentString() { } static String buildXStripeClientUserAgentString(String aiAgent) { - String[] propertyNames = { - "os.name", - "os.version", - "os.arch", - "java.version", - "java.vendor", - "java.vm.version", - "java.vm.vendor" - }; + String[] propertyNames = {"java.version", "java.vendor", "java.vm.version", "java.vm.vendor"}; Map propertyMap = new HashMap<>(); for (String propertyName : propertyNames) { @@ -217,7 +209,15 @@ static String buildXStripeClientUserAgentString(String aiAgent) { } propertyMap.put("bindings.version", Stripe.VERSION); propertyMap.put("lang", "Java"); - propertyMap.put("publisher", "Stripe"); + if (Stripe.enableTelemetry) { + propertyMap.put( + "platform", + System.getProperty("os.name") + + " " + + System.getProperty("os.version") + + " " + + System.getProperty("os.arch")); + } if (Stripe.getAppInfo() != null) { propertyMap.put("application", ApiResource.INTERNAL_GSON.toJson(Stripe.getAppInfo())); } diff --git a/src/test/java/com/stripe/net/HttpClientTest.java b/src/test/java/com/stripe/net/HttpClientTest.java index 9edcb6a0717..aa0d1f0ebc9 100644 --- a/src/test/java/com/stripe/net/HttpClientTest.java +++ b/src/test/java/com/stripe/net/HttpClientTest.java @@ -254,4 +254,45 @@ public void testBuildXStripeClientUserAgentStringWithAIAgent() { com.google.gson.JsonParser.parseString(json).getAsJsonObject(); assertEquals("cursor", parsed.get("ai_agent").getAsString()); } + + @Test + public void testBuildXStripeClientUserAgentStringOmitsPublisherAndOsKeys() { + String json = HttpClient.buildXStripeClientUserAgentString(""); + com.google.gson.JsonObject parsed = + com.google.gson.JsonParser.parseString(json).getAsJsonObject(); + assertTrue(!parsed.has("publisher")); + assertTrue(!parsed.has("os.name")); + assertTrue(!parsed.has("os.version")); + assertTrue(!parsed.has("os.arch")); + } + + @Test + public void testBuildXStripeClientUserAgentStringPlatformWithTelemetry() { + boolean originalTelemetry = Stripe.enableTelemetry; + try { + Stripe.enableTelemetry = true; + String json = HttpClient.buildXStripeClientUserAgentString(""); + com.google.gson.JsonObject parsed = + com.google.gson.JsonParser.parseString(json).getAsJsonObject(); + assertTrue(parsed.has("platform")); + String platform = parsed.get("platform").getAsString(); + assertTrue(platform.contains(System.getProperty("os.name"))); + } finally { + Stripe.enableTelemetry = originalTelemetry; + } + } + + @Test + public void testBuildXStripeClientUserAgentStringNoPlatformWithoutTelemetry() { + boolean originalTelemetry = Stripe.enableTelemetry; + try { + Stripe.enableTelemetry = false; + String json = HttpClient.buildXStripeClientUserAgentString(""); + com.google.gson.JsonObject parsed = + com.google.gson.JsonParser.parseString(json).getAsJsonObject(); + assertTrue(!parsed.has("platform")); + } finally { + Stripe.enableTelemetry = originalTelemetry; + } + } }