/** * {@inheritDoc} */ @Override public void setHeader(final String name, final String value) { headers.setHeader(name, value); }
Headers headers = new Headers(); lastHeaderValue.append(" "); lastHeaderValue.append(ltrim(line)); headers.setHeader(lastHeaderName, lastHeaderValue.toString()); // Overwrite the previous value if (joinRepeatingHeaders && headers.containsHeader(lastHeaderName)) { lastHeaderValue.append(headers.getHeader(lastHeaderName)).append(COMA); headers.setHeader(lastHeaderName, lastHeaderValue.toString());
/** * Generates string representation of headers. * * @return */ @Override public String serialize(final Headers headers) { Set<String> names = headers.keySet(); StringBuilder sb = new StringBuilder(); for (String name : names) { sb.append(name) .append(KEY_VALUE_SEPARATOR) .append(headers.getHeader(name)) .append(NEW_LINE); } sb.append(NEW_LINE); return sb.toString(); } }
private boolean isMultipartRequest(final Headers headers) { return headers.containsHeader(Headers.HEADER_CONTENT_TYPE) && headers.getHeader(Headers.HEADER_CONTENT_TYPE).toLowerCase() .startsWith(MULTIPART_FORM_DATA_HEADER_START); }
@Test public void shouldPreserveOriginalCase() { Headers headers = new Headers(); headers.setHeader("header", "Value"); headers.setHeader("someOtherHeader", "123"); assertThat(headersSerializer.serialize(headers), anyOf( is("someOtherHeader: 123\r\nheader: Value\r\n\r\n"), is("header: Value\r\nsomeOtherHeader: 123\r\n\r\n") )); } }
@Test public void shouldSetAndContainHeadersCaseInsensitive() { headers.setHeader("Cookie", "ABCD"); assertThat(headers.containsHeader("COOKIE"), is(true)); }
/** * {@inheritDoc} */ @Override public String getHeader(final String name) { return headers.getHeader(name); }
/** * {@inheritDoc} */ @Override public void reset() { headers = new Headers(); setKeepAlive(false); isCommitted = false; cookies = new ArrayList<>(); // resetBuffer(); }
/** * {@inheritDoc} */ @Override public int getContentLength() { if (!headers.containsHeader(Headers.HEADER_CONTENT_LENGTH)) { return -1; } return getIntHeader(Headers.HEADER_CONTENT_LENGTH); }
/** * {@inheritDoc} */ @Override public Enumeration getHeaderNames() { return Collections.enumeration(headers.keySet()); }
private Map<String, Cookie> getCookies(final Headers headers) { if (headers.containsHeader(Headers.HEADER_COOKIE)) { try { return cookieParser.parse(headers.getHeader(Headers.HEADER_COOKIE)); } catch (MalformedInputException e) { // Returns an empty map } } return new HashMap<>(); }
@Test public void shouldSerializeResponse() { Headers headers = new Headers(); headers.setHeader("Header", "Value"); headers.setHeader("SomeOtherHeader", "123"); assertThat(headersSerializer.serialize(headers), anyOf( is("SomeOtherHeader: 123\r\nHeader: Value\r\n\r\n"), is("Header: Value\r\nSomeOtherHeader: 123\r\n\r\n") )); }
/** * {@inheritDoc} */ @Override public String getContentType() { return headers.getHeader(Headers.HEADER_CONTENT_TYPE); }
/** * Reads and computes headers. * * @param in * @return * @throws IOException */ private Headers computeHeaders(final InputStream in) throws IOException { String headersString = getHeadersString(in); if (headersString.length() > MINUMUM_HEADER_LINE_LENGTH) { try { return headersParser.parse(headersString); } catch (MalformedInputException e) { throw new ProtocolException("Malformed request headers"); } } // TODO Write a test that sends a request containing status line only return new Headers(); }
/** * {@inheritDoc} */ @Override public int getIntHeader(final String name) { if (!headers.containsHeader(name)) { return -1; } try { return Integer.parseInt(getHeader(name)); } catch (NumberFormatException e) { return 0; } }
@Test public void shouldAssignNoCookieAndNoHeadersOnNoHeadersString() throws Exception { when(socket.getInputStream()).thenReturn(new ByteArrayInputStream("GET / HTTP/1.0\r\n\r\n".getBytes())); HttpServletRequestImpl request = factory.createFromSocket(socket); assertThat(request.getCookies().length, is(0)); assertThat(request.getHeaders().keySet().size(), is(0)); } }