1
1
package no .nav .vedtak .klient .http ;
2
2
3
- import java .io .IOException ;
4
3
import java .net .http .HttpClient ;
5
- import java .net .http .HttpRequest ;
6
- import java .net .http .HttpResponse ;
7
4
import java .time .Duration ;
8
- import java .util .Set ;
9
-
10
- import org .slf4j .Logger ;
11
- import org .slf4j .LoggerFactory ;
12
-
13
- import no .nav .vedtak .exception .IntegrasjonException ;
14
5
15
6
/**
16
7
* Generic interface to using java.net.http.HttpClient using HttpKlientRequest to ensure callId and timeout
20
11
* - Create a HttpRequest.Builder with URI, Method, and custom headers.
21
12
* - Use DefaultHttpKlient.instance().sendAccept(HttpKlientRequest.callId(builder))
22
13
*/
23
- public final class DefaultHttpClient {
24
-
25
- private static final Logger LOG = LoggerFactory .getLogger (DefaultHttpClient .class );
26
- private static final int RETRIES = 2 ; // 1 attempt, the n retries
14
+ public final class DefaultHttpClient extends BaseHttpClient {
27
15
28
16
private static DefaultHttpClient CLIENT ;
29
17
30
- private final HttpClient httpClient ;
31
-
32
18
private DefaultHttpClient () {
33
- this . httpClient = HttpClient .newBuilder ().connectTimeout (Duration .ofSeconds (15 )).proxy (HttpClient .Builder .NO_PROXY ).build ();
19
+ super ( HttpClient .newBuilder ().connectTimeout (Duration .ofSeconds (15 )).proxy (HttpClient .Builder .NO_PROXY ).build () );
34
20
}
35
21
36
22
public static synchronized DefaultHttpClient client () {
@@ -41,94 +27,5 @@ public static synchronized DefaultHttpClient client() {
41
27
}
42
28
return inst ;
43
29
}
44
-
45
- public String send (HttpClientRequest request ) {
46
- var httpRequest = request .request ();
47
- return ResponseHandler .handleResponse (doSendExpectStringRetry (httpRequest ), httpRequest .uri (), Set .of ());
48
- }
49
-
50
- public String send (HttpClientRequest request , Set <Integer > acceptStatus ) {
51
- var httpRequest = request .request ();
52
- return ResponseHandler .handleResponse (doSendExpectStringRetry (httpRequest ), httpRequest .uri (), acceptStatus );
53
- }
54
-
55
- public byte [] sendReturnByteArray (HttpClientRequest request ) {
56
- var httpRequest = request .request ();
57
- return ResponseHandler .handleResponse (doSendExpectBytearrayRetry (httpRequest ), httpRequest .uri (), Set .of ());
58
- }
59
-
60
- public HttpResponse <String > sendReturnResponse (HttpClientRequest request ) {
61
- var httpRequest = request .request ();
62
- return ResponseHandler .handleRawResponse (doSendExpectStringRetry (httpRequest ), httpRequest .uri (), Set .of ());
63
- }
64
-
65
- public HttpResponse <String > sendReturnResponse (HttpClientRequest request , Set <Integer > acceptStatus ) {
66
- var httpRequest = request .request ();
67
- return ResponseHandler .handleRawResponse (doSendExpectStringRetry (httpRequest ), httpRequest .uri (), acceptStatus );
68
- }
69
-
70
- public HttpResponse <byte []> sendReturnResponseByteArray (HttpClientRequest request ) {
71
- var httpRequest = request .request ();
72
- return ResponseHandler .handleRawResponse (doSendExpectBytearrayRetry (httpRequest ), httpRequest .uri (), Set .of ());
73
- }
74
-
75
- /**
76
- * Raw response, not checked for status codes 4nn or 5nn - please ensure that any usage avoids "quiet errors"
77
- */
78
- public HttpResponse <String > sendReturnUnhandled (HttpClientRequest request ) {
79
- return doSendExpectStringRetry (request .request ());
80
- }
81
-
82
- public HttpResponse <String > sendReturnUnhandledNoRetry (HttpClientRequest request ) {
83
- return doSendExpectString (request .request ());
84
- }
85
-
86
- private HttpResponse <byte []> doSendExpectBytearrayRetry (HttpRequest httpRequest ) {
87
- int i = RETRIES ;
88
- while (i -- > 0 ) {
89
- try {
90
- return doSendExpectBytearray (httpRequest );
91
- } catch (IntegrasjonException e ) {
92
- LOG .trace ("F-157390 IntegrasjonException ved kall {} til endepunkt {}" , RETRIES - i , e );
93
- }
94
- }
95
- return doSendExpectBytearray (httpRequest );
96
- }
97
-
98
- private HttpResponse <String > doSendExpectStringRetry (HttpRequest httpRequest ) {
99
- int i = RETRIES ;
100
- while (i -- > 0 ) {
101
- try {
102
- return doSendExpectString (httpRequest );
103
- } catch (IntegrasjonException e ) {
104
- LOG .trace ("F-157390 IntegrasjonException ved kall {} til endepunkt {}" , RETRIES - i , e );
105
- }
106
- }
107
- return doSendExpectString (httpRequest );
108
- }
109
-
110
- private HttpResponse <byte []> doSendExpectBytearray (HttpRequest request ) {
111
- try {
112
- return httpClient .send (request , HttpResponse .BodyHandlers .ofByteArray ());
113
- } catch (IOException e ) {
114
- throw new IntegrasjonException ("F-157391" , "Uventet IO-exception mot endepunkt" , e );
115
- } catch (InterruptedException e ) {
116
- Thread .currentThread ().interrupt ();
117
- throw new IntegrasjonException ("F-157392" , "InterruptedException ved kall mot endepunkt" , e );
118
- }
119
- }
120
-
121
- private HttpResponse <String > doSendExpectString (HttpRequest request ) {
122
- try {
123
- return httpClient .send (request , HttpResponse .BodyHandlers .ofString ());
124
- } catch (IOException e ) {
125
- throw new IntegrasjonException ("F-157391" , "Uventet IO-exception mot endepunkt" , e );
126
- } catch (InterruptedException e ) {
127
- Thread .currentThread ().interrupt ();
128
- throw new IntegrasjonException ("F-157392" , "InterruptedException ved kall mot endepunkt" , e );
129
- }
130
- }
131
-
132
-
133
30
}
134
31
0 commit comments