Skip to content

Commit be45559

Browse files
Feature/Add url encoding (#8)
1 parent c6c5801 commit be45559

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

src/main/java/org/truemail_rb/TruemailClient.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import java.io.IOException;
99
import java.io.InputStream;
1010
import java.io.InputStreamReader;
11+
import java.io.UnsupportedEncodingException;
1112
import java.net.HttpURLConnection;
1213
import java.net.URL;
14+
import java.net.URLEncoder;
1315
import java.util.HashMap;
1416
import java.util.Map;
1517

@@ -57,18 +59,26 @@ private String getResponseBody(InputStream inputStream) throws IOException {
5759
return sb.toString();
5860
}
5961

60-
private String uri(String email) {
61-
StringBuilder result = new StringBuilder();
62+
private String uri(String email) throws UnsupportedEncodingException {
63+
return getPath() + getEncodedParams(email);
64+
}
65+
66+
private String getPath(){
67+
StringBuilder path = new StringBuilder();
6268
String protocol = this.truemailConfiguration.isSecureConnection() ? "https" : "http";
63-
result.append(protocol);
64-
result.append("://");
65-
result.append(this.truemailConfiguration.getHost());
66-
result.append(":");
67-
result.append(this.truemailConfiguration.getPort());
68-
result.append("?email=");
69-
result.append(email);
69+
path.append(protocol);
70+
path.append("://");
71+
path.append(this.truemailConfiguration.getHost());
72+
path.append(":");
73+
path.append(this.truemailConfiguration.getPort());
74+
return path.toString();
75+
}
7076

71-
return result.toString();
77+
private String getEncodedParams(String email) throws UnsupportedEncodingException {
78+
// This way of encoding looks strange, but there is no other way in vanilla java
79+
// See https://stackoverflow.com/questions/444112/how-do-i-encode-uri-parameter-values
80+
return "?email=" + URLEncoder.encode(email, "UTF-8")
81+
.replaceAll("\\+", "%20");
7282
}
7383

7484
private Map<String, String> headers() {

src/test/java/org/truemail_rb/TruemailClientTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class TruemailClientTests {
2323
@Test
2424
public void validateReturnsSuccessResponseWhenValidEmail() throws Exception {
2525
URL u = mock(URL.class);
26-
String url = "http://localhost:9292?email=test.email@google.com";
26+
String url = "http://localhost:9292?email=test.email%40google.com";
2727
whenNew(URL.class).withArguments(url).thenReturn(u);
2828
HttpURLConnection huc = mock(HttpURLConnection.class);
2929
when(u.openConnection()).thenReturn(huc);

0 commit comments

Comments
 (0)