Skip to content

Commit 10bfd1b

Browse files
committed
Update OkHttp interceptor to add audience to POST body
1 parent 1b745c7 commit 10bfd1b

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/user/ServiceUserRepositoryLegacy.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
import java.util.stream.Collectors;
3737
import java.util.stream.Stream;
3838
import okhttp3.Credentials;
39-
import okhttp3.HttpUrl;
39+
import okhttp3.FormBody;
40+
import okhttp3.HttpUrl;
4041
import okhttp3.MediaType;
4142
import okhttp3.OkHttpClient;
4243
import okhttp3.Request;
@@ -65,6 +66,7 @@ public class ServiceUserRepositoryLegacy implements UserRepository {
6566
private static final Duration CONNECTION_READ_TIMEOUT = Duration.ofSeconds(90);
6667

6768
private static final String CLIENT_AUDIENCE = "res_restAuthorizer";
69+
private static final String CLIENT_AUDIENCE_KEY = "audience";
6870

6971
private final OkHttpClient client;
7072
private final Map<String, OAuth2UserCredentials> cachedCredentials;
@@ -79,16 +81,18 @@ public class ServiceUserRepositoryLegacy implements UserRepository {
7981
public ServiceUserRepositoryLegacy() {
8082
this.client = new OkHttpClient.Builder()
8183
.addInterceptor(chain -> {
82-
Request original = chain.request();
83-
HttpUrl originalUrl = original.url();
84-
HttpUrl newUrl = originalUrl.newBuilder()
85-
.addQueryParameter("audience", CLIENT_AUDIENCE)
86-
.build();
87-
Request newRequest = original.newBuilder()
88-
.url(newUrl)
89-
.build();
90-
return chain.proceed(newRequest);
91-
})
84+
Request req = chain.request();
85+
if ("POST".equalsIgnoreCase(req.method()) && req.body() instanceof FormBody) {
86+
FormBody oldBody = (FormBody) req.body();
87+
FormBody.Builder newBody = new FormBody.Builder();
88+
for (int i = 0; i < oldBody.size(); i++) {
89+
newBody.addEncoded(oldBody.encodedName(i), oldBody.encodedValue(i));
90+
}
91+
newBody.add(CLIENT_AUDIENCE_KEY, CLIENT_AUDIENCE);
92+
req = req.newBuilder().post(newBody.build()).build();
93+
}
94+
return chain.proceed(req);
95+
})
9296
.connectTimeout(CONNECTION_TIMEOUT)
9397
.readTimeout(CONNECTION_READ_TIMEOUT)
9498
.build();

kafka-connect-oura-source/src/main/java/org/radarbase/connect/rest/oura/user/OuraServiceUserRepositoryLegacy.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
import java.util.stream.Collectors;
4141
import java.util.stream.Stream;
4242
import okhttp3.Credentials;
43-
import okhttp3.HttpUrl;
43+
import okhttp3.FormBody;
44+
import okhttp3.HttpUrl;
4445
import okhttp3.MediaType;
4546
import okhttp3.OkHttpClient;
4647
import okhttp3.Request;
@@ -79,6 +80,7 @@ public class OuraServiceUserRepositoryLegacy extends OuraUserRepository {
7980
private static final Duration CONNECTION_READ_TIMEOUT = Duration.ofSeconds(90);
8081

8182
private static final String CLIENT_AUDIENCE = "res_restAuthorizer";
83+
private static final String CLIENT_AUDIENCE_KEY = "audience";
8284

8385
private final OkHttpClient client;
8486
private final Map<String, OAuth2UserCredentials> cachedCredentials;
@@ -93,16 +95,18 @@ public class OuraServiceUserRepositoryLegacy extends OuraUserRepository {
9395
public OuraServiceUserRepositoryLegacy() {
9496
this.client = new OkHttpClient.Builder()
9597
.addInterceptor(chain -> {
96-
Request original = chain.request();
97-
HttpUrl originalUrl = original.url();
98-
HttpUrl newUrl = originalUrl.newBuilder()
99-
.addQueryParameter("audience", CLIENT_AUDIENCE)
100-
.build();
101-
Request newRequest = original.newBuilder()
102-
.url(newUrl)
103-
.build();
104-
return chain.proceed(newRequest);
105-
})
98+
Request req = chain.request();
99+
if ("POST".equalsIgnoreCase(req.method()) && req.body() instanceof FormBody) {
100+
FormBody oldBody = (FormBody) req.body();
101+
FormBody.Builder newBody = new FormBody.Builder();
102+
for (int i = 0; i < oldBody.size(); i++) {
103+
newBody.addEncoded(oldBody.encodedName(i), oldBody.encodedValue(i));
104+
}
105+
newBody.add(CLIENT_AUDIENCE_KEY, CLIENT_AUDIENCE);
106+
req = req.newBuilder().post(newBody.build()).build();
107+
}
108+
return chain.proceed(req);
109+
})
106110
.connectTimeout(CONNECTION_TIMEOUT)
107111
.readTimeout(CONNECTION_READ_TIMEOUT)
108112
.build();

0 commit comments

Comments
 (0)