Skip to content

Commit c2d56e4

Browse files
webpubsub, bug fix on content-type and content-length (Azure#25167)
1 parent 5ae31b8 commit c2d56e4

File tree

4 files changed

+90
-19
lines changed

4 files changed

+90
-19
lines changed

sdk/webpubsub/azure-messaging-webpubsub/src/main/java/com/azure/messaging/webpubsub/WebPubSubServiceAsyncClient.java

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,13 @@ public Mono<Response<Void>> sendToAllWithResponse(
131131
if (requestOptions == null) {
132132
requestOptions = new RequestOptions();
133133
}
134-
requestOptions.addHeader("contentType", contentType.toString());
135-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
134+
requestOptions.addHeader("Content-Type", contentType.toString());
135+
requestOptions.addRequestCallback(httpRequest -> {
136+
if (httpRequest.getHeaders().stream()
137+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
138+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
139+
}
140+
});
136141
return this.serviceClient.sendToAllWithResponseAsync(hub, message, requestOptions);
137142
}
138143

@@ -218,8 +223,13 @@ public Mono<Response<Void>> sendToConnectionWithResponse(
218223
if (requestOptions == null) {
219224
requestOptions = new RequestOptions();
220225
}
221-
requestOptions.addHeader("contentType", contentType.toString());
222-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
226+
requestOptions.addHeader("Content-Type", contentType.toString());
227+
requestOptions.addRequestCallback(httpRequest -> {
228+
if (httpRequest.getHeaders().stream()
229+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
230+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
231+
}
232+
});
223233
return this.serviceClient.sendToConnectionWithResponseAsync(
224234
hub, connectionId, message, requestOptions);
225235
}
@@ -294,8 +304,13 @@ public Mono<Response<Void>> sendToGroupWithResponse(
294304
if (requestOptions == null) {
295305
requestOptions = new RequestOptions();
296306
}
297-
requestOptions.addHeader("contentType", contentType.toString());
298-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
307+
requestOptions.addHeader("Content-Type", contentType.toString());
308+
requestOptions.addRequestCallback(httpRequest -> {
309+
if (httpRequest.getHeaders().stream()
310+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
311+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
312+
}
313+
});
299314
return this.serviceClient.sendToGroupWithResponseAsync(
300315
hub, group, message, requestOptions);
301316
}
@@ -401,8 +416,13 @@ public Mono<Response<Void>> sendToUserWithResponse(
401416
if (requestOptions == null) {
402417
requestOptions = new RequestOptions();
403418
}
404-
requestOptions.addHeader("contentType", contentType.toString());
405-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
419+
requestOptions.addHeader("Content-Type", contentType.toString());
420+
requestOptions.addRequestCallback(httpRequest -> {
421+
if (httpRequest.getHeaders().stream()
422+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
423+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
424+
}
425+
});
406426
return this.serviceClient.sendToUserWithResponseAsync(
407427
hub, userId, message, requestOptions);
408428
}

sdk/webpubsub/azure-messaging-webpubsub/src/main/java/com/azure/messaging/webpubsub/WebPubSubServiceClient.java

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,13 @@ public Response<Void> sendToAllWithResponse(
133133
if (requestOptions == null) {
134134
requestOptions = new RequestOptions();
135135
}
136-
requestOptions.addHeader("contentType", contentType.toString());
137-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
136+
requestOptions.addHeader("Content-Type", contentType.toString());
137+
requestOptions.addRequestCallback(httpRequest -> {
138+
if (httpRequest.getHeaders().stream()
139+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
140+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
141+
}
142+
});
138143
return this.serviceClient.sendToAllWithResponse(
139144
hub, message, requestOptions, context);
140145
}
@@ -226,8 +231,13 @@ public Response<Void> sendToConnectionWithResponse(
226231
if (requestOptions == null) {
227232
requestOptions = new RequestOptions();
228233
}
229-
requestOptions.addHeader("contentType", contentType.toString());
230-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
234+
requestOptions.addHeader("Content-Type", contentType.toString());
235+
requestOptions.addRequestCallback(httpRequest -> {
236+
if (httpRequest.getHeaders().stream()
237+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
238+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
239+
}
240+
});
231241
return this.serviceClient.sendToConnectionWithResponse(
232242
hub, connectionId, message, requestOptions, context);
233243
}
@@ -306,8 +316,13 @@ public Response<Void> sendToGroupWithResponse(
306316
if (requestOptions == null) {
307317
requestOptions = new RequestOptions();
308318
}
309-
requestOptions.addHeader("contentType", contentType.toString());
310-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
319+
requestOptions.addHeader("Content-Type", contentType.toString());
320+
requestOptions.addRequestCallback(httpRequest -> {
321+
if (httpRequest.getHeaders().stream()
322+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
323+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
324+
}
325+
});
311326
return this.serviceClient.sendToGroupWithResponse(
312327
hub, group, message, requestOptions, context);
313328
}
@@ -419,8 +434,13 @@ public Response<Void> sendToUserWithResponse(
419434
if (requestOptions == null) {
420435
requestOptions = new RequestOptions();
421436
}
422-
requestOptions.addHeader("contentType", contentType.toString());
423-
requestOptions.addHeader("contentLength", String.valueOf(contentLength));
437+
requestOptions.addHeader("Content-Type", contentType.toString());
438+
requestOptions.addRequestCallback(httpRequest -> {
439+
if (httpRequest.getHeaders().stream()
440+
.noneMatch(header -> header.getName().equalsIgnoreCase("Content-Length"))) {
441+
httpRequest.setHeader("Content-Length", String.valueOf(contentLength));
442+
}
443+
});
424444
return this.serviceClient.sendToUserWithResponse(
425445
hub, userId, message, requestOptions, context);
426446
}

sdk/webpubsub/azure-messaging-webpubsub/src/test/java/com/azure/messaging/webpubsub/WebPubSubServiceClientTests.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.azure.identity.DefaultAzureCredentialBuilder;
1818
import com.azure.messaging.webpubsub.models.GetClientAccessTokenOptions;
1919
import com.azure.messaging.webpubsub.models.WebPubSubClientAccessToken;
20+
import com.azure.messaging.webpubsub.models.WebPubSubContentType;
2021
import com.azure.messaging.webpubsub.models.WebPubSubPermission;
2122
import com.nimbusds.jwt.JWT;
2223
import com.nimbusds.jwt.JWTClaimsSet;
@@ -98,11 +99,25 @@ public void testBroadcastBytes() {
9899

99100
@Test
100101
public void testSendToUserString() {
102+
BinaryData message = BinaryData.fromString("Hello World!");
103+
101104
assertResponse(client.sendToUserWithResponse("test_user",
102-
BinaryData.fromString("Hello World!"),
105+
message,
103106
new RequestOptions().addRequestCallback(request -> request.getHeaders()
104107
.set("Content-Type", "text/plain")),
105108
Context.NONE), 202);
109+
110+
assertResponse(client.sendToUserWithResponse("test_user",
111+
message, WebPubSubContentType.TEXT_PLAIN, message.getLength(),
112+
null, Context.NONE),
113+
202);
114+
115+
// ByteArrayInputStream messageStream = new ByteArrayInputStream(message.toBytes());
116+
// assertResponse(client.sendToUserWithResponse("test_user",
117+
// BinaryData.fromStream(messageStream),
118+
// WebPubSubContentType.APPLICATION_OCTET_STREAM, message.getLength(),
119+
// null, Context.NONE),
120+
// 202);
106121
}
107122

108123
@Test

sdk/webpubsub/azure-messaging-webpubsub/src/test/resources/session-records/WebPubSubServiceClientTests.testSendToUserString.json

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"Method" : "POST",
44
"Uri" : "https://REDACTED.webpubsub.azure.com/api/hubs/test/users/test_user/:send?api-version=2021-10-01",
55
"Headers" : {
6-
"User-Agent" : "azsdk-java-azure-messaging-webpubsub/1.0.0-beta.5 (15.0.1; Windows 10; 10.0)",
6+
"User-Agent" : "azsdk-java-azure-messaging-webpubsub/1.0.0-beta.6 (15.0.1; Windows 10; 10.0)",
77
"Content-Type" : "text/plain"
88
},
99
"Response" : {
@@ -12,7 +12,23 @@
1212
"Connection" : "keep-alive",
1313
"retry-after" : "0",
1414
"StatusCode" : "202",
15-
"Date" : "Thu, 14 Oct 2021 09:08:03 GMT"
15+
"Date" : "Wed, 03 Nov 2021 04:29:14 GMT"
16+
},
17+
"Exception" : null
18+
}, {
19+
"Method" : "POST",
20+
"Uri" : "https://REDACTED.webpubsub.azure.com/api/hubs/test/users/test_user/:send?api-version=2021-10-01",
21+
"Headers" : {
22+
"User-Agent" : "azsdk-java-azure-messaging-webpubsub/1.0.0-beta.6 (15.0.1; Windows 10; 10.0)",
23+
"Content-Type" : "application/octet-stream,text/plain"
24+
},
25+
"Response" : {
26+
"content-length" : "0",
27+
"Strict-Transport-Security" : "max-age=15724800; includeSubDomains",
28+
"Connection" : "keep-alive",
29+
"retry-after" : "0",
30+
"StatusCode" : "202",
31+
"Date" : "Wed, 03 Nov 2021 04:29:15 GMT"
1632
},
1733
"Exception" : null
1834
} ],

0 commit comments

Comments
 (0)