Skip to content

Commit 58a7c7f

Browse files
authored
fix: recognize content types with whitespace (#200)
The RFC for content-type header format allows optional whitespace before the semicolon. Our regular expressions for recognizing various mime types do not account for this, so valid mime types may not be recognized. This commit adjusts the expression to close that gap. Signed-off-by: Dustin Popp <[email protected]>
1 parent 1716f0f commit 58a7c7f

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/main/java/com/ibm/cloud/sdk/core/service/BaseService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ public abstract class BaseService {
8686

8787
// Regular expression for JSON-related mimetypes.
8888
protected static final Pattern JSON_MIME_PATTERN =
89-
Pattern.compile("(?i)application\\/((json)|(merge\\-patch\\+json))(;.*)?");
89+
Pattern.compile("(?i)application\\/((json)|(merge\\-patch\\+json))(\\s*;.*)?");
9090
protected static final Pattern JSON_PATCH_MIME_PATTERN =
91-
Pattern.compile("(?i)application\\/json\\-patch\\+json(;.*)?");
91+
Pattern.compile("(?i)application\\/json\\-patch\\+json(\\s*;.*)?");
9292

9393
// Hide the default ctor to prevent clients from calling it directly.
9494
protected BaseService() {

src/test/java/com/ibm/cloud/sdk/core/test/service/BaseServiceTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public void testMimeTypes() {
8181
assertFalse(BaseService.isJsonPatchMimeType(null));
8282
assertTrue(BaseService.isJsonMimeType("application/json"));
8383
assertTrue(BaseService.isJsonMimeType("application/json; charset=utf-8"));
84+
assertTrue(BaseService.isJsonMimeType("application/json ;charset=utf-8"));
8485
assertTrue(BaseService.isJsonMimeType("application/json;charset=utf-8"));
8586
assertTrue(BaseService.isJsonMimeType("APPLICATION/JSON;charset=utf-16"));
8687
assertFalse(BaseService.isJsonMimeType("application/notjson"));
@@ -95,6 +96,7 @@ public void testMimeTypes() {
9596

9697
assertTrue(BaseService.isJsonPatchMimeType("application/json-patch+json"));
9798
assertTrue(BaseService.isJsonPatchMimeType("application/json-patch+json;charset=utf-8"));
99+
assertTrue(BaseService.isJsonPatchMimeType("application/json-patch+json ; charset=utf-8"));
98100
assertFalse(BaseService.isJsonPatchMimeType("application/json"));
99101
assertFalse(BaseService.isJsonPatchMimeType("APPLICATION/JsOn; charset=utf-8"));
100102
assertFalse(BaseService.isJsonPatchMimeType("application/merge-patch+json"));

0 commit comments

Comments
 (0)