From 2acaf6533dd61f649b4394082e0e600b7bc0f62d Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Wed, 21 Jun 2023 12:01:34 +0100 Subject: [PATCH] JAL-4001 Rationalise user-agent string into HttpUtils --- src/jalview/analytics/Plausible.java | 13 ++++++---- src/jalview/bin/Jalview.java | 3 +-- src/jalview/util/HttpUtils.java | 45 +++++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/jalview/analytics/Plausible.java b/src/jalview/analytics/Plausible.java index 0d6cd65..f0ba59e 100644 --- a/src/jalview/analytics/Plausible.java +++ b/src/jalview/analytics/Plausible.java @@ -24,13 +24,12 @@ import jalview.bin.Cache; import jalview.bin.Console; import jalview.bin.Jalview; import jalview.util.ChannelProperties; +import jalview.util.HttpUtils; public class Plausible { - private static final String USER_AGENT = ChannelProperties - .getProperty("app_name", "Jalview") + " " - + Cache.getDefault("VERSION", "Unknown") + " " - + MethodHandles.lookup().lookupClass() + " help@jalview.org"; + private static final String USER_AGENT = HttpUtils.getUserAgent( + MethodHandles.lookup().lookupClass().getCanonicalName()); private static final String JALVIEW_ID = "Jalview Desktop"; @@ -187,6 +186,10 @@ public class Plausible Console.debug( "Plausible: HTTP Request is: '" + urlSb.toString() + "'"); + if (DEBUG) + { + Console.debug("Plausible: User-Agent is: '" + USER_AGENT + "'"); + } Console.debug("Plausible: POSTed JSON is:\n" + jsonString); byte[] jsonBytes = jsonString.getBytes(StandardCharsets.UTF_8); @@ -226,7 +229,7 @@ public class Plausible sb.append(response); } String body = sb.toString(); - Console.debug("Plausible response content; " + body); + Console.debug("Plausible response content:\n" + body); } } catch (MalformedURLException e) { diff --git a/src/jalview/bin/Jalview.java b/src/jalview/bin/Jalview.java index 93ecd9d..07e122a 100755 --- a/src/jalview/bin/Jalview.java +++ b/src/jalview/bin/Jalview.java @@ -633,8 +633,7 @@ public class Jalview { headless = true; } - System.setProperty("http.agent", - "Jalview Desktop/" + Cache.getDefault("VERSION", "Unknown")); + System.setProperty("http.agent", HttpUtils.getUserAgent()); try { diff --git a/src/jalview/util/HttpUtils.java b/src/jalview/util/HttpUtils.java index 0454cab..8379777 100644 --- a/src/jalview/util/HttpUtils.java +++ b/src/jalview/util/HttpUtils.java @@ -25,10 +25,11 @@ import java.io.InputStream; import java.net.HttpURLConnection; import java.net.ProtocolException; import java.net.URL; -import java.util.List; import javax.ws.rs.HttpMethod; +import jalview.bin.Cache; + public class HttpUtils { @@ -101,4 +102,46 @@ public class HttpUtils return connection.getResponseCode() == 200; } + public static String getUserAgent() + { + return getUserAgent(null); + } + + public static String getUserAgent(String className) + { + StringBuilder sb = new StringBuilder(); + sb.append("Jalview"); + sb.append('/'); + sb.append(Cache.getDefault("VERSION", "Unknown")); + sb.append(" ("); + sb.append(System.getProperty("os.name")); + sb.append("; "); + sb.append(System.getProperty("os.arch")); + sb.append(' '); + sb.append(System.getProperty("os.name")); + sb.append(' '); + sb.append(System.getProperty("os.version")); + sb.append("; "); + sb.append("java/"); + sb.append(System.getProperty("java.version")); + sb.append("; "); + sb.append("jalview/"); + sb.append(ChannelProperties.getProperty("channel")); + if (className != null) + { + sb.append("; "); + sb.append(className); + } + String installation = Cache.applicationProperties + .getProperty("INSTALLATION"); + if (installation != null) + { + sb.append("; "); + sb.append(installation); + } + sb.append(')'); + sb.append(" help@jalview.org"); + return sb.toString(); + } + } -- 1.7.10.2