Skip to content

Commit d1ada75

Browse files
committed
ensure that baseUrl cannot be null and that when used it has a trailing slash
1 parent 6cbba1a commit d1ada75

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/main/java/com/github/davidmoten/aws/lw/client/Request.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,9 @@ private static String calculateUrl(String url, String serviceName, Optional<Stri
199199
List<NameValue> queries, List<String> pathSegments, BaseUrlFactory baseUrlFactory) {
200200
String u = url;
201201
if (u == null) {
202-
u = baseUrlFactory.create(serviceName, region) //
202+
String baseUrl = baseUrlFactory.create(serviceName, region);
203+
Preconditions.checkNotNull(baseUrl, "baseUrl cannot be null");
204+
u = trimAndEnsureHasTrailingSlash(baseUrl) //
203205
+ pathSegments //
204206
.stream() //
205207
.map(x -> trimAndRemoveLeadingAndTrailingSlashes(x)) //
@@ -222,6 +224,16 @@ private static String calculateUrl(String url, String serviceName, Optional<Stri
222224
return u;
223225
}
224226

227+
//VisibleForTesting
228+
static String trimAndEnsureHasTrailingSlash(String s) {
229+
String r = s.trim();
230+
if (r.endsWith("/")) {
231+
return r;
232+
} else {
233+
return r + "/";
234+
}
235+
}
236+
225237
public byte[] responseAsBytes() {
226238
Response r = response();
227239
Optional<? extends RuntimeException> exception = client.exceptionFactory().create(r);

src/test/java/com/github/davidmoten/aws/lw/client/RequestTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,13 @@ public void testHasBodyButNoHeader() throws IOException {
5353
assertFalse(Request.hasBody(r));
5454
}
5555
}
56+
57+
@Test
58+
public void testTrimAndEnsureHasTrailingSlash() {
59+
assertEquals("/",Request.trimAndEnsureHasTrailingSlash(""));
60+
assertEquals("/",Request.trimAndEnsureHasTrailingSlash("/"));
61+
assertEquals("abc/",Request.trimAndEnsureHasTrailingSlash("abc"));
62+
assertEquals("abc/",Request.trimAndEnsureHasTrailingSlash("abc/"));
63+
}
5664

5765
}

0 commit comments

Comments
 (0)