1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.transport.apache;
20
21 import java.io.IOException;
22 import java.nio.charset.StandardCharsets;
23
24 import org.apache.http.Header;
25 import org.apache.http.HttpHeaders;
26 import org.apache.http.client.HttpResponseException;
27 import org.apache.http.client.methods.CloseableHttpResponse;
28 import org.apache.http.util.EntityUtils;
29 import org.eclipse.aether.spi.connector.transport.http.RFC9457.RFC9457Reporter;
30
31 public class ApacheRFC9457Reporter extends RFC9457Reporter<CloseableHttpResponse, HttpResponseException> {
32 public static final ApacheRFC9457Reporter INSTANCE = new ApacheRFC9457Reporter();
33
34 private ApacheRFC9457Reporter() {}
35
36 @Override
37 protected boolean isRFC9457Message(final CloseableHttpResponse response) {
38 Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);
39 if (headers.length > 0) {
40 String contentType = headers[0].getValue();
41 return hasRFC9457ContentType(contentType);
42 }
43 return false;
44 }
45
46 @Override
47 protected int getStatusCode(final CloseableHttpResponse response) {
48 return response.getStatusLine().getStatusCode();
49 }
50
51 @Override
52 protected String getReasonPhrase(final CloseableHttpResponse response) {
53 String reasonPhrase = response.getStatusLine().getReasonPhrase();
54 if (reasonPhrase == null || reasonPhrase.isEmpty()) {
55 return "";
56 }
57 int statusCode = getStatusCode(response);
58 return reasonPhrase + " (" + statusCode + ")";
59 }
60
61 @Override
62 protected String getBody(final CloseableHttpResponse response) throws IOException {
63 return EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
64 }
65 }