JAL-4001 Rationalise user-agent string into HttpUtils
authorBen Soares <b.soares@dundee.ac.uk>
Wed, 21 Jun 2023 11:01:34 +0000 (12:01 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Wed, 21 Jun 2023 11:01:34 +0000 (12:01 +0100)
src/jalview/analytics/Plausible.java
src/jalview/bin/Jalview.java
src/jalview/util/HttpUtils.java

index 0d6cd65..f0ba59e 100644 (file)
@@ -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)
     {
index 93ecd9d..07e122a 100755 (executable)
@@ -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
     {
index 0454cab..8379777 100644 (file)
@@ -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();
+  }
+
 }