/** * Adds informational {@link com.palantir.remoting3.clients.UserAgent.Agent}s to the given {@link UserAgent}, one * for the http-remoting library and one for the given service class. Version strings are extracted from the * packages' {@link Package#getImplementationVersion implementation version}, defaulting to 0.0.0 if no version can * be found. */ private static UserAgent augmentUserAgent(UserAgent agent, Class<?> serviceClass) { UserAgent augmentedAgent = agent; String maybeServiceVersion = serviceClass.getPackage().getImplementationVersion(); augmentedAgent = augmentedAgent.addAgent(UserAgent.Agent.of( serviceClass.getSimpleName(), maybeServiceVersion != null ? maybeServiceVersion : "0.0.0")); String maybeRemotingVersion = OkHttpClients.class.getPackage().getImplementationVersion(); augmentedAgent = augmentedAgent.addAgent(UserAgent.Agent.of( UserAgents.REMOTING_AGENT_NAME, maybeRemotingVersion != null ? maybeRemotingVersion : "0.0.0")); return augmentedAgent; }
/** * Formats the given agent in the form {@code name/version (key:value; key:value)}, where the ()-block of comments * is omitted if zero comments are provided. */ private static String formatSingleAgent(UserAgent.Agent agent, Map<String, String> comments) { // TODO(rfink): Think about validation comments here? Must not contain special characters. StringBuilder formatted = new StringBuilder() .append(agent.name()) .append("/") .append(agent.version()); String formattedComments = COLON_SEMICOLON_JOINER.join(comments); if (!formattedComments.isEmpty()) { formatted.append(" (") .append(formattedComments) .append(')'); } return formatted.toString(); }
builder.primary(UserAgent.Agent.of(name, version)); comments.ifPresent(c -> { Map<String, String> parsedComments = parseComments(c); } else { builder.addInformational(UserAgent.Agent.of(name, version)); log.debug("Invalid user agent, falling back to default/unknown agent", SafeArg.of("userAgent", userAgent)); return builder.primary(UserAgent.Agent.of("unknown", UserAgent.Agent.DEFAULT_VERSION)).build(); } else { throw new IllegalArgumentException("Failed to parse user agent string: " + userAgent);