io.micrometer.tracing.otel.bridge.DefaultHttpClientAttributesGetter Maven / Gradle / Ivy
/**
* Copyright 2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.micrometer.tracing.otel.bridge;
import io.micrometer.common.lang.Nullable;
import io.micrometer.tracing.http.HttpClientRequest;
import io.micrometer.tracing.http.HttpClientResponse;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter;
import java.net.URI;
import java.util.Collections;
import java.util.List;
/**
* Extracts OpenTelemetry http semantic attributes value for client http spans.
*
* @author Nikita Salnikov-Tarnovski
* @since 1.0.0
* @deprecated scheduled for removal in 1.4.0
*/
@Deprecated
public class DefaultHttpClientAttributesGetter
implements HttpClientAttributesGetter {
@Nullable
@Override
public String getUrlFull(HttpClientRequest httpClientRequest) {
return httpClientRequest.url();
}
@Nullable
@Override
public String getServerAddress(HttpClientRequest httpClientRequest) {
try {
URI uri = URI.create(httpClientRequest.url());
return uri.getHost();
}
catch (Exception ex) {
return null;
}
}
@Nullable
@Override
public Integer getServerPort(HttpClientRequest httpClientRequest) {
try {
URI uri = URI.create(httpClientRequest.url());
return uri.getPort();
}
catch (Exception ex) {
return null;
}
}
/**
* @deprecated This method was removed from OpenTelemetry. Please use
* {@link #getUrlFull(HttpClientRequest)} instead.
*/
@Nullable
@Deprecated
public String getUrl(HttpClientRequest httpClientRequest) {
return this.getUrlFull(httpClientRequest);
}
/**
* @deprecated This method was removed from OpenTelemetry. It should not be used since
* always returned null in Micrometer Tracing.
*/
@Nullable
@Deprecated
public String getFlavor(HttpClientRequest httpClientRequest, @Nullable HttpClientResponse httpClientResponse) {
return null;
}
@Nullable
@Override
public String getHttpRequestMethod(HttpClientRequest httpClientRequest) {
return httpClientRequest.method();
}
/**
* @deprecated This method was removed from OpenTelemetry. Please use
* {@link #getHttpRequestMethod(HttpClientRequest)} instead.
*/
@Nullable
@Deprecated
public String getMethod(HttpClientRequest httpClientRequest) {
return this.getHttpRequestMethod(httpClientRequest);
}
@Override
public List getHttpRequestHeader(HttpClientRequest httpClientRequest, String name) {
if (httpClientRequest == null) {
return Collections.emptyList();
}
String value = httpClientRequest.header(name);
return value == null ? Collections.emptyList() : Collections.singletonList(value);
}
/**
* @deprecated This method was removed from OpenTelemetry. Please use
* {@link #getHttpRequestHeader(HttpClientRequest, String)} instead.
*/
@Deprecated
public List getRequestHeader(HttpClientRequest httpClientRequest, String name) {
return this.getHttpRequestHeader(httpClientRequest, name);
}
@Nullable
@Override
public Integer getHttpResponseStatusCode(HttpClientRequest httpClientRequest, HttpClientResponse httpClientResponse,
@Nullable Throwable error) {
if (httpClientResponse == null) {
return null;
}
return httpClientResponse.statusCode();
}
/**
* @deprecated This method was removed from OpenTelemetry. Please use
* {@link #getHttpResponseStatusCode(HttpClientRequest, HttpClientResponse, Throwable)}
* instead.
*/
@Nullable
@Deprecated
public Integer getStatusCode(HttpClientRequest httpClientRequest, HttpClientResponse httpClientResponse,
Throwable error) {
return this.getHttpResponseStatusCode(httpClientRequest, httpClientResponse, error);
}
@Override
public List getHttpResponseHeader(HttpClientRequest httpClientRequest,
HttpClientResponse httpClientResponse, String name) {
if (httpClientResponse == null) {
return Collections.emptyList();
}
try {
String value = httpClientResponse.header(name);
return value == null ? Collections.emptyList() : Collections.singletonList(value);
}
catch (Exception e) {
return Collections.emptyList();
}
}
/**
* @deprecated This method was removed from OpenTelemetry. Please use
* {@link #getHttpResponseHeader(HttpClientRequest, HttpClientResponse, String)}
* instead.
*/
@Deprecated
public List getResponseHeader(HttpClientRequest httpClientRequest, HttpClientResponse httpClientResponse,
String name) {
return this.getHttpResponseHeader(httpClientRequest, httpClientResponse, name);
}
}