1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.transport.jdk;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.net.http.HttpRequest;
24 import java.net.http.HttpRequest.Builder;
25 import java.net.http.HttpResponse;
26 import java.util.Optional;
27
28 import org.eclipse.aether.spi.connector.transport.http.HttpConstants;
29 import org.eclipse.aether.spi.connector.transport.http.HttpTransporterException;
30 import org.eclipse.aether.spi.connector.transport.http.RFC9457.RFC9457Reporter;
31
32 public class JdkRFC9457Reporter
33 extends RFC9457Reporter<HttpResponse<InputStream>, HttpTransporterException, HttpRequest.Builder> {
34 public static final JdkRFC9457Reporter INSTANCE = new JdkRFC9457Reporter();
35
36 private JdkRFC9457Reporter() {}
37
38 @Override
39 public void prepareRequest(Builder requestBuilder) {
40 requestBuilder.header(HttpConstants.ACCEPT, CONTENT_TYPE_PROBLEM_DETAILS_JSON_AND_ANY);
41 }
42
43 @Override
44 protected boolean isRFC9457Message(final HttpResponse<InputStream> response) {
45 Optional<String> optionalContentType = response.headers().firstValue("Content-Type");
46 if (optionalContentType.isPresent()) {
47 String contentType = optionalContentType.get();
48 return hasRFC9457ContentType(contentType);
49 }
50 return false;
51 }
52
53 @Override
54 protected int getStatusCode(final HttpResponse<InputStream> response) {
55 return response.statusCode();
56 }
57
58 @Override
59 protected String getReasonPhrase(final HttpResponse<InputStream> response) {
60 return null;
61 }
62
63 @Override
64 protected String getBody(final HttpResponse<InputStream> response) throws IOException {
65 try (InputStream is = response.body()) {
66 return readBody(is);
67 }
68 }
69 }