99import com .exceptionless .exceptionlessclient .utils .Utils ;
1010import com .exceptionless .exceptionlessclient .utils .VisibleForTesting ;
1111import lombok .Builder ;
12+ import okhttp3 .*;
1213import org .slf4j .Logger ;
1314import org .slf4j .LoggerFactory ;
1415
15- import java .net .URI ;
1616import java .net .URLEncoder ;
17- import java .net .http .HttpClient ;
18- import java .net .http .HttpHeaders ;
19- import java .net .http .HttpRequest ;
20- import java .net .http .HttpResponse ;
2117import java .nio .charset .StandardCharsets ;
2218import java .time .Duration ;
2319import java .util .List ;
24- import java .util .OptionalLong ;
20+ import java .util .Optional ;
2521import java .util .stream .Collectors ;
2622
2723public class DefaultSubmissionClient implements SubmissionClientIF {
@@ -30,18 +26,22 @@ public class DefaultSubmissionClient implements SubmissionClientIF {
3026
3127 private final Configuration configuration ;
3228 private final SettingsManager settingsManager ;
33- private final HttpClient httpClient ;
29+ private final OkHttpClient httpClient ;
3430
3531 @ Builder
3632 public DefaultSubmissionClient (Configuration configuration , SettingsManager settingsManager ) {
3733 this .configuration = configuration ;
3834 this .settingsManager = settingsManager ;
39- this .httpClient = HttpClient .newHttpClient ();
35+ this .httpClient =
36+ new OkHttpClient ()
37+ .newBuilder ()
38+ .connectTimeout (Duration .ofMillis (configuration .getSubmissionClientTimeoutInMillis ()))
39+ .build ();
4040 }
4141
4242 @ VisibleForTesting
4343 DefaultSubmissionClient (
44- Configuration configuration , SettingsManager settingsManager , HttpClient httpClient ) {
44+ Configuration configuration , SettingsManager settingsManager , OkHttpClient httpClient ) {
4545 this .configuration = configuration ;
4646 this .settingsManager = settingsManager ;
4747 this .httpClient = httpClient ;
@@ -67,38 +67,33 @@ public SubmissionResponse postUserDescription(String referenceId, UserDescriptio
6767
6868 private SubmissionResponse postSubmission (String url , Object data ) {
6969 try {
70- URI uri = new URI (url );
7170 String requestJSON = Utils .JSON_MAPPER .writeValueAsString (data );
72-
73- HttpRequest request =
74- HttpRequest .newBuilder ()
75- .uri (uri )
76- .POST (HttpRequest .BodyPublishers .ofString (requestJSON ))
77- .header ("Content-Type" , "application/json" )
78- .header ("User-Agent" , Configuration .USER_AGENT )
79- .timeout (Duration .ofMillis (configuration .getSubmissionClientTimeoutInMillis ()))
71+ Request request =
72+ new Request .Builder ()
73+ .url (url )
74+ .post (RequestBody .create (requestJSON , MediaType .parse ("application/json" )))
8075 .build ();
8176
82- HttpResponse <String > response =
83- httpClient .send (request , HttpResponse .BodyHandlers .ofString ());
77+ Response response = httpClient .newCall (request ).execute ();
8478
85- if (response .statusCode () == 200 ) {
79+ if (response .code () / 100 == 2 ) {
8680 updateSettingsFromHeaders (response .headers ());
8781 }
8882
8983 return SubmissionResponse .builder ()
90- .statusCode (response .statusCode ())
91- .message (response . body ( ))
84+ .statusCode (response .code ())
85+ .message (Utils . addCodeToResponseBodyStr ( response ))
9286 .build ();
9387 } catch (Exception e ) {
9488 throw new SubmissionException (e );
9589 }
9690 }
9791
98- private void updateSettingsFromHeaders (HttpHeaders headers ) {
99- OptionalLong maybeSettingsVersion = headers .firstValueAsLong (CONFIGURATION_VERSION_HEADER );
92+ private void updateSettingsFromHeaders (Headers headers ) {
93+ Optional <String > maybeSettingsVersion =
94+ Optional .ofNullable (headers .get (CONFIGURATION_VERSION_HEADER ));
10095 if (maybeSettingsVersion .isPresent ()) {
101- settingsManager .checkVersion (maybeSettingsVersion .getAsLong ( ));
96+ settingsManager .checkVersion (Long . parseLong ( maybeSettingsVersion .get () ));
10297 } else {
10398 LOG .error ("No config version header was returned" );
10499 }
@@ -107,26 +102,21 @@ private void updateSettingsFromHeaders(HttpHeaders headers) {
107102 @ Override
108103 public void sendHeartBeat (String sessionIdOrUserId , boolean closeSession ) {
109104 try {
110- URI uri =
111- new URI (
112- String .format (
113- "%s/api/v2/events/session/heartbeat?id=%s&close=%s&access_token=%s" ,
114- configuration .getHeartbeatServerUrl (),
115- URLEncoder .encode (sessionIdOrUserId , StandardCharsets .UTF_8 ),
116- closeSession ,
117- configuration .getApiKey ()));
118- HttpRequest request =
119- HttpRequest .newBuilder ()
120- .uri (uri )
121- .GET ()
122- .header ("X-Exceptionless-Client" , Configuration .USER_AGENT )
123- .timeout (Duration .ofMillis (configuration .getSubmissionClientTimeoutInMillis ()))
105+ Request request =
106+ new Request .Builder ()
107+ .url (
108+ String .format (
109+ "%s/api/v2/events/session/heartbeat?id=%s&close=%s&access_token=%s" ,
110+ configuration .getHeartbeatServerUrl (),
111+ URLEncoder .encode (sessionIdOrUserId , StandardCharsets .UTF_8 ),
112+ closeSession ,
113+ configuration .getApiKey ()))
114+ .get ()
124115 .build ();
125116
126- HttpResponse <String > response =
127- httpClient .send (request , HttpResponse .BodyHandlers .ofString ());
117+ Response response = httpClient .newCall (request ).execute ();
128118
129- if (response .statusCode () != 200 ) {
119+ if (response .code () / 100 != 2 ) {
130120 LOG .error (
131121 String .format (
132122 "Error in submitting heartbeat to the server for sessionOrUserId: %s" ,
0 commit comments