public RequestStore processRequest(BufferedReader in) throws IOException { ArrayList<String> requestHeaders = readHeaders(in); parseInitialRequestLine(requestHeaders.remove(0)); if (checkForQueryStringParams()) { processQueryStringParams(); seturiWithDetachedParams(); } parseHeadersIntoKeyValuePairs(requestHeaders); setMimeType(requestStore.getRequestUri()); if (requestStore.getRequestContentLength() != null) { String bodyContent = checkForBlankLines(in) + readRequestBody(in, (requestStore.getRequestContentLength() - 1)); requestStore.setRequestBody(bodyContent); } return requestStore; }
@Test public void itShouldBeAbleToSetTheContentLength() throws IOException { StringReader request = new StringReader("GET / HTTP/1.1\nHost: www.Superawesome.com\nContent-Length: 45"); BufferedReader in = new BufferedReader(request); RequestStore requestStore = new RequestStore(); RequestParser requestParser = new RequestParser(in, requestStore); requestParser.readHeaders(in); Integer length = 45; assertEquals(length, requestStore.getRequestContentLength()); }
@Test public void itShouldBeAbleToParseARequest() throws IOException { StringReader request = new StringReader( "POST /form HTTP/1.1\nHost: www.Superawesome.com\nContent-Length: 24\n\r\nmy = data value1 = hello\n"); BufferedReader in = new BufferedReader(request); RequestStore requestStore = new RequestStore(); RequestParser requestParser = new RequestParser(in, requestStore); Integer length = 24; requestParser.processRequest(in); assertEquals("POST", requestStore.getMethod()); assertEquals("/form", requestStore.getRequestUri()); assertEquals("HTTP/1.1", requestStore.getProtocolVersion()); assertEquals(length, requestStore.getRequestContentLength()); assertEquals("my = data value1 = hello", requestStore.getRequestBody()); }