1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.client5.testing.extension.async;
29
30 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
31 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
32 import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
33 import org.apache.hc.client5.testing.SSLTestContexts;
34 import org.apache.hc.core5.http.nio.ssl.TlsStrategy;
35 import org.apache.hc.core5.http2.config.H2Config;
36 import org.apache.hc.core5.reactor.IOReactorConfig;
37 import org.apache.hc.core5.util.Timeout;
38
39 final class H2OnlyMinimalTestClientBuilder implements TestAsyncClientBuilder {
40
41 private Timeout timeout;
42 private TlsStrategy tlsStrategy;
43 private H2Config h2Config;
44
45 public H2OnlyMinimalTestClientBuilder() {
46 }
47
48 @Override
49 public TestAsyncClientBuilder setTimeout(final Timeout timeout) {
50 this.timeout = timeout;
51 return this;
52 }
53
54 @Override
55 public TestAsyncClientBuilder setTlsStrategy(final TlsStrategy tlsStrategy) {
56 this.tlsStrategy = tlsStrategy;
57 return this;
58 }
59
60 @Override
61 public ClientProtocolLevel getProtocolLevel() {
62 return ClientProtocolLevel.MINIMAL_H2_ONLY;
63 }
64
65 @Override
66 public TestAsyncClientBuilder setH2Config(final H2Config h2Config) {
67 this.h2Config = h2Config;
68 return this;
69 }
70
71 @Override
72 public TestAsyncClient build() throws Exception {
73 final CloseableHttpAsyncClient client = HttpAsyncClients.createHttp2Minimal(
74 h2Config,
75 IOReactorConfig.custom()
76 .setSoTimeout(timeout)
77 .build(),
78 tlsStrategy != null ? tlsStrategy : new DefaultClientTlsStrategy(SSLTestContexts.createClientSSLContext()));
79 return new TestAsyncClient(client, null);
80 }
81
82 }