1
1
package org .iot .dsa .dslink .restadapter ;
2
2
3
3
4
- import java .io .IOException ;
4
+ import java .net .CookieManager ;
5
+ import java .net .CookiePolicy ;
5
6
import java .time .Duration ;
6
7
import org .iot .dsa .logging .DSLogger ;
7
8
import org .iot .dsa .node .DSMap ;
8
9
import org .iot .dsa .node .DSMap .Entry ;
9
- import okhttp3 .Authenticator ;
10
- import okhttp3 .Credentials ;
11
10
import okhttp3 .HttpUrl ;
11
+ import okhttp3 .JavaNetCookieJar ;
12
12
import okhttp3 .MediaType ;
13
13
import okhttp3 .OkHttpClient ;
14
14
import okhttp3 .Request ;
15
15
import okhttp3 .RequestBody ;
16
16
import okhttp3 .Response ;
17
- import okhttp3 .Route ;
18
17
19
18
public class WebClientProxy extends DSLogger {
20
19
private CredentialProvider credentials ;
@@ -49,11 +48,14 @@ public WebClientProxy(CredentialProvider credentials, long readTimeoutMillis, lo
49
48
// return new WebClientProxy(username, password, clientID, clientSecret, tokenURL, Util.AUTH_SCHEME.OAUTH2_USR_PASS);
50
49
// }
51
50
52
-
53
- public Response invoke (String httpMethod , String address , DSMap urlParameters , Object body ) {
51
+ public Request .Builder prepareInvoke (String httpMethod , String address , DSMap urlParameters , Object body ) {
54
52
prepareClient ();
55
53
Request .Builder requestBuilder = prepareRequest (address , urlParameters );
56
54
requestBuilder .method (httpMethod , body == null ? null : RequestBody .create (MediaType .parse ("application/json" ), body .toString ()));
55
+ return requestBuilder ;
56
+ }
57
+
58
+ public Response completeInvoke (Request .Builder requestBuilder ) {
57
59
Request request = requestBuilder .build ();
58
60
Response response = null ;
59
61
try {
@@ -64,6 +66,12 @@ public Response invoke(String httpMethod, String address, DSMap urlParameters, O
64
66
return response ;
65
67
}
66
68
69
+
70
+ public Response invoke (String httpMethod , String address , DSMap urlParameters , Object body ) {
71
+ Request .Builder requestBuilder = prepareInvoke (httpMethod , address , urlParameters , body );
72
+ return completeInvoke (requestBuilder );
73
+ }
74
+
67
75
private Request .Builder prepareRequest (String address , DSMap urlParameters ) {
68
76
HttpUrl .Builder urlBuilder = HttpUrl .parse (address ).newBuilder ();
69
77
@@ -84,30 +92,31 @@ private void prepareClient() {
84
92
}
85
93
}
86
94
87
- private static int responseCount (Response response ) {
88
- int result = 1 ;
89
- while ((response = response .priorResponse ()) != null ) {
90
- result ++;
91
- }
92
- return result ;
93
- }
95
+ // private static int responseCount(Response response) {
96
+ // int result = 1;
97
+ // while ((response = response.priorResponse()) != null) {
98
+ // result++;
99
+ // }
100
+ // return result;
101
+ // }
94
102
95
103
private OkHttpClient configureAuthorization () {
96
104
OkHttpClient .Builder clientBuilder = new OkHttpClient .Builder ();
97
105
switch (getScheme ()) {
98
106
case NO_AUTH :
99
107
break ;
100
108
case BASIC_USR_PASS :
101
- clientBuilder .authenticator (new Authenticator () {
102
- @ Override
103
- public Request authenticate (Route route , Response response ) throws IOException {
104
- if (responseCount (response ) >= 3 ) {
105
- return null ;
106
- }
107
- String credential = Credentials .basic (credentials .getUsername (), credentials .getPassword ());
108
- return response .request ().newBuilder ().header ("Authorization" , credential ).build ();
109
- }
110
- });
109
+ // clientBuilder.authenticator(new Authenticator() {
110
+ // @Override
111
+ // public Request authenticate(Route route, Response response) throws IOException {
112
+ // if (responseCount(response) >= 3) {
113
+ // return null;
114
+ // }
115
+ // String credential = Credentials.basic(credentials.getUsername(), credentials.getPassword());
116
+ // return response.request().newBuilder().header("Authorization", credential).build();
117
+ // }
118
+ // });
119
+ clientBuilder .addInterceptor (new BasicAuthInterceptor (credentials .getUsername (), credentials .getPassword ()));
111
120
break ;
112
121
case OAUTH2_CLIENT :
113
122
case OAUTH2_USR_PASS :
@@ -121,6 +130,9 @@ public Request authenticate(Route route, Response response) throws IOException {
121
130
if (writeTimeout != null ) {
122
131
clientBuilder .writeTimeout (writeTimeout );
123
132
}
133
+ CookieManager cookieManager = new CookieManager ();
134
+ cookieManager .setCookiePolicy (CookiePolicy .ACCEPT_ALL );
135
+ clientBuilder .cookieJar (new JavaNetCookieJar (cookieManager ));
124
136
return clientBuilder .build ();
125
137
}
126
138
0 commit comments