Skip to content

Commit a313130

Browse files
committed
Return JSON from post and put endpoints
1 parent 6b02b82 commit a313130

2 files changed

Lines changed: 25 additions & 18 deletions

File tree

src/main/java/org/gaul/httpbin/HttpBinHandler.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,21 @@ public void handle(String target, Request baseRequest,
103103
respondJSON(servletResponse, os, response);
104104
baseRequest.setHandled(true);
105105
return;
106-
} else if (method.equals("POST") && uri.equals("/post")) {
107-
Utils.copy(is, os);
108-
servletResponse.setStatus(HttpServletResponse.SC_OK);
109-
baseRequest.setHandled(true);
110-
return;
111-
} else if (method.equals("PUT") && uri.equals("/put")) {
112-
Utils.copy(is, os);
113-
servletResponse.setStatus(HttpServletResponse.SC_OK);
106+
} else if ((method.equals("POST") && uri.equals("/post")) ||
107+
(method.equals("PUT") && uri.equals("/put"))) {
108+
JSONObject response = new JSONObject();
109+
110+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
111+
Utils.copy(is, baos);
112+
response.put("data", new JSONObject(new String(
113+
baos.toByteArray(), StandardCharsets.UTF_8)));
114+
115+
response.put("args", mapParametersToJSON(request));
116+
response.put("headers", mapHeadersToJSON(request));
117+
response.put("origin", request.getRemoteAddr());
118+
response.put("url", getFullURL(request));
119+
120+
respondJSON(servletResponse, os, response);
114121
baseRequest.setHandled(true);
115122
return;
116123
} else if (uri.equals("/redirect-to")) {

src/test/java/org/gaul/httpbin/HttpBinTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
import static org.assertj.core.api.Assertions.assertThat;
2121

2222
import java.net.URI;
23-
import java.util.Random;
2423

2524
import org.eclipse.jetty.client.HttpClient;
2625
import org.eclipse.jetty.client.api.ContentResponse;
27-
import org.eclipse.jetty.client.util.BytesContentProvider;
26+
import org.eclipse.jetty.client.util.StringContentProvider;
27+
import org.json.JSONObject;
2828
import org.junit.After;
2929
import org.junit.Before;
3030
import org.junit.Test;
@@ -68,24 +68,24 @@ public void tearDown() throws Exception {
6868

6969
@Test
7070
public void testPostData() throws Exception {
71-
byte[] input = new byte[1024];
72-
new Random().nextBytes(input);
71+
String input = "{\"foo\": 42}";
7372
ContentResponse response = client.POST(httpBinEndpoint + "/post")
74-
.content(new BytesContentProvider(input))
73+
.content(new StringContentProvider(input))
7574
.send();
7675
assertThat(response.getStatus()).as("status").isEqualTo(200);
77-
assertThat(response.getContent()).isEqualTo(input);
76+
JSONObject object = new JSONObject(response.getContentAsString());
77+
assertThat(object.getJSONObject("data").getInt("foo")).isEqualTo(42);
7878
}
7979

8080
@Test
8181
public void testPutData() throws Exception {
82-
byte[] input = new byte[1024];
83-
new Random().nextBytes(input);
82+
String input = "{\"foo\": 42}";
8483
ContentResponse response = client.newRequest(httpBinEndpoint + "/put")
8584
.method("PUT")
86-
.content(new BytesContentProvider(input))
85+
.content(new StringContentProvider(input))
8786
.send();
8887
assertThat(response.getStatus()).as("status").isEqualTo(200);
89-
assertThat(response.getContent()).isEqualTo(input);
88+
JSONObject object = new JSONObject(response.getContentAsString());
89+
assertThat(object.getJSONObject("data").getInt("foo")).isEqualTo(42);
9090
}
9191
}

0 commit comments

Comments
 (0)