content: /*
   * Copyright The OpenTelemetry Authors
   * SPDX-License-Identifier: Apache-2.0
   */
  
  package io.opentelemetry.javaagent.instrumentation.okhttp.v2_2;
  
  import com.squareup.okhttp.Request;
  import com.squareup.okhttp.Response;
  import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
  import java.util.List;
  import javax.annotation.Nullable;
  
  final class OkHttp2HttpAttributesGetter implements HttpClientAttributesGetter<Request, Response> {
  
    @Override
    public String getHttpRequestMethod(Request request) {
      return request.method();
    }
  
    @Override
    public String getUrlFull(Request request) {
      return request.urlString();
    }
  
    @Override
    public List<String> getHttpRequestHeader(Request request, String name) {
      return request.headers(name);
    }
  
    @Override
    public Integer getHttpResponseStatusCode(
        Request request, Response response, @Nullable Throwable error) {
      return response.code();
    }
  
    @Override
    public List<String> getHttpResponseHeader(Request request, Response response, String name) {
      return response.headers(name);
    }
  
    @Nullable
    @Override
    public String getNetworkProtocolName(Request request, @Nullable Response response) {
      if (response == null) {
        return null;
      }
      switch (response.protocol()) {
        case HTTP_1_0:
        case HTTP_1_1:
        case HTTP_2:
          return "http";
        case SPDY_3:
          return "spdy";
      }
      return null;
    }
  
    @Nullable
    @Override
    public String getNetworkProtocolVersion(Request request, @Nullable Response response) {
      if (response == null) {
        return null;
      }
      switch (response.protocol()) {
        case HTTP_1_0:
          return "1.0";
        case HTTP_1_1:
          return "1.1";
        case HTTP_2:
          return "2";
        case SPDY_3:
          return "3.1";
      }
      return null;
    }
  
    @Override
    @Nullable
    public String getServerAddress(Request request) {
      return request.url().getHost();
    }
  
    @Override
    public Integer getServerPort(Request request) {
      return request.url().getPort();
    }
  }
  