in agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/Exporter.java [501:548]
private static String getTargetForHttpClientSpan(Attributes attributes) {
// from the spec, at least one of the following sets of attributes is required:
// * http.url
// * http.scheme, http.host, http.target
// * http.scheme, net.peer.name, net.peer.port, http.target
// * http.scheme, net.peer.ip, net.peer.port, http.target
String target = getTargetFromPeerService(attributes);
if (target != null) {
return target;
}
// note http.host includes the port (at least when non-default)
target = attributes.get(SemanticAttributes.HTTP_HOST);
if (target != null) {
String scheme = attributes.get(SemanticAttributes.HTTP_SCHEME);
if ("http".equals(scheme)) {
if (target.endsWith(":80")) {
target = target.substring(0, target.length() - 3);
}
} else if ("https".equals(scheme)) {
if (target.endsWith(":443")) {
target = target.substring(0, target.length() - 4);
}
}
return target;
}
String url = attributes.get(SemanticAttributes.HTTP_URL);
if (url != null) {
target = UrlParser.getTargetFromUrl(url);
if (target != null) {
return target;
}
}
String scheme = attributes.get(SemanticAttributes.HTTP_SCHEME);
int defaultPort;
if ("http".equals(scheme)) {
defaultPort = 80;
} else if ("https".equals(scheme)) {
defaultPort = 443;
} else {
defaultPort = 0;
}
target = getTargetFromNetAttributes(attributes, defaultPort);
if (target != null) {
return target;
}
// this should not happen, just a failsafe
return "Http";
}