use of org.webpieces.httpparser.api.dto.HttpData in project webpieces by deanhiller.
the class TestRequestBody method testPartialHeaders.
@Test
public void testPartialHeaders() {
HttpDummyRequest request = createPostRequestWithBody();
byte[] expected = request.getHttpData().getBody().createByteArray();
byte[] data = unwrap(request);
byte[] first = new byte[20];
byte[] second = new byte[10];
byte[] third = new byte[data.length - first.length - second.length];
System.arraycopy(data, 0, first, 0, first.length);
System.arraycopy(data, first.length, second, 0, second.length);
System.arraycopy(data, first.length + second.length, third, 0, third.length);
DataWrapper wrap1 = dataGen.wrapByteArray(first);
DataWrapper wrap2 = dataGen.wrapByteArray(second);
DataWrapper wrap3 = dataGen.wrapByteArray(third);
Memento memento = parser.prepareToParse();
memento = parser.parse(memento, wrap1);
Assert.assertEquals(ParsingState.HEADERS, memento.getUnParsedState().getCurrentlyParsing());
Assert.assertEquals(20, memento.getUnParsedState().getCurrentUnparsedSize());
memento = parser.parse(memento, wrap2);
Assert.assertEquals(ParsingState.HEADERS, memento.getUnParsedState().getCurrentlyParsing());
Assert.assertEquals(30, memento.getUnParsedState().getCurrentUnparsedSize());
Assert.assertEquals(0, memento.getParsedMessages().size());
memento = parser.parse(memento, wrap3);
Assert.assertEquals(2, memento.getParsedMessages().size());
HttpPayload msg = memento.getParsedMessages().get(0);
Assert.assertEquals(request.getRequest(), msg);
HttpData data1 = (HttpData) memento.getParsedMessages().get(1);
DataWrapper body = data1.getBody();
byte[] bodyBytesActual = body.createByteArray();
Assert.assertArrayEquals(expected, bodyBytesActual);
}
use of org.webpieces.httpparser.api.dto.HttpData in project webpieces by deanhiller.
the class TestRequestBody method createPostRequestWithBody.
private HttpDummyRequest createPostRequestWithBody() {
byte[] payload = new byte[30];
for (int i = 0; i < payload.length; i++) {
payload[i] = (byte) i;
}
HttpRequest request = TestRequestParsing.createPostRequest();
Header header = new Header();
header.setName(KnownHeaderName.CONTENT_LENGTH);
header.setValue("" + payload.length);
DataWrapper data = dataGen.wrapByteArray(payload);
request.addHeader(header);
HttpData httpData = new HttpData(data, true);
return new HttpDummyRequest(request, httpData);
}
use of org.webpieces.httpparser.api.dto.HttpData in project webpieces by deanhiller.
the class Requests method createJsonRequest.
public static HttpDummyRequest createJsonRequest(KnownHttpMethod method, String url) {
HttpRequest request = createRequest(method, url);
String json = "{ `query`: `cats and dogs`, `meta`: { `numResults`: 4 } }".replace("`", "\"");
DataWrapper body = gen.wrapByteArray(json.getBytes());
HttpData data = new HttpData(body, true);
request.addHeader(new Header(KnownHeaderName.CONTENT_LENGTH, body.getReadableSize() + ""));
return new HttpDummyRequest(request, data);
}
use of org.webpieces.httpparser.api.dto.HttpData in project webpieces by deanhiller.
the class Requests method createPostRequestImpl.
private static HttpDummyRequest createPostRequestImpl(String url, String... argTuples) throws UnsupportedEncodingException {
if (argTuples.length % 2 != 0)
throw new IllegalArgumentException("argTuples.length must be of even size (key/value)");
HttpUri httpUri = new HttpUri(url);
HttpRequestLine requestLine = new HttpRequestLine();
requestLine.setMethod(KnownHttpMethod.POST);
requestLine.setUri(httpUri);
HttpRequest req = new HttpRequest();
req.setRequestLine(requestLine);
req.addHeader(new Header(KnownHeaderName.HOST, "myhost.com"));
String encodedParams = "";
for (int i = 0; i < argTuples.length; i += 2) {
String key = URLEncoder.encode(argTuples[i], StandardCharsets.UTF_8);
String value = URLEncoder.encode(argTuples[i + 1], StandardCharsets.UTF_8);
if (!"".equals(encodedParams))
encodedParams += "&";
encodedParams += key + "=" + value;
}
byte[] bytes = encodedParams.getBytes(StandardCharsets.UTF_8);
DataWrapper body = gen.wrapByteArray(bytes);
HttpData data = new HttpData(body, true);
req.addHeader(new Header(KnownHeaderName.CONTENT_LENGTH, "" + body.getReadableSize()));
req.addHeader(new Header(KnownHeaderName.CONTENT_TYPE, "application/x-www-form-urlencoded"));
return new HttpDummyRequest(req, data);
}
use of org.webpieces.httpparser.api.dto.HttpData in project webpieces by deanhiller.
the class Requests method createBadJsonRequest.
public static HttpDummyRequest createBadJsonRequest(KnownHttpMethod method, String url) {
HttpRequest request = createRequest(method, url);
String json = "{ `query `cats and dogs`, `meta`: { `numResults`: 4 } }".replace("`", "\"");
DataWrapper body = gen.wrapByteArray(json.getBytes());
HttpData data = new HttpData(body, true);
request.addHeader(new Header(KnownHeaderName.CONTENT_LENGTH, body.getReadableSize() + ""));
return new HttpDummyRequest(request, data);
}
Aggregations