/** * Create a copy of this HTTP request, replacing its requestLine with the provided one. * * @param requestLine to replace * @return copy of this HTTP message with the provided requestLine */ public RawHttpRequest withRequestLine(RequestLine requestLine) { return new RawHttpRequest(requestLine, getHeaders(), getBody().orElse(null), getSenderAddress().orElse(null)); }
/** * Create a copy of this HTTP request, replacing its requestLine with the provided one. * * @param requestLine to replace * @return copy of this HTTP message with the provided requestLine */ public RawHttpRequest withRequestLine(RequestLine requestLine) { return new RawHttpRequest(requestLine, getHeaders(), getBody().orElse(null), getSenderAddress().orElse(null)); }
@Override public RawHttpRequest withBody(HttpMessageBody body) { return new RawHttpRequest(requestLine, body.headersFrom(getHeaders()), body.toBodyReader(), getSenderAddress().orElse(null)); }
@Override public RawHttpRequest withBody(HttpMessageBody body) { return new RawHttpRequest(requestLine, body.headersFrom(getHeaders()), body.toBodyReader(), getSenderAddress().orElse(null)); }
@Override public RawHttpRequest withHeaders(RawHttpHeaders headers, boolean append) { return new RawHttpRequest(requestLine, append ? getHeaders().and(headers) : headers.and(getHeaders()), getBody().orElse(null), getSenderAddress().orElse(null)); }
@Override public RawHttpRequest withHeaders(RawHttpHeaders headers, boolean append) { return new RawHttpRequest(requestLine, append ? getHeaders().and(headers) : headers.and(getHeaders()), getBody().orElse(null), getSenderAddress().orElse(null)); }
/** * Parses the HTTP request produced by the given stream. * * @param inputStream producing a HTTP request * @param senderAddress the address of the request sender, if known * @return a parsed HTTP request object * @throws InvalidHttpRequest if the request is invalid * @throws IOException if a problem occurs accessing the stream */ public RawHttpRequest parseRequest(InputStream inputStream, @Nullable InetAddress senderAddress) throws IOException { RequestLine requestLine = metadataParser.parseRequestLine(inputStream); RawHttpHeaders originalHeaders = metadataParser.parseHeaders(inputStream, (message, lineNumber) -> // add 1 to the line number to correct for the start-line new InvalidHttpRequest(message, lineNumber + 1)); RawHttpHeaders.Builder modifiableHeaders = RawHttpHeaders.newBuilder(originalHeaders); // do a little cleanup to make sure the request is actually valid requestLine = verifyHost(requestLine, modifiableHeaders); RawHttpHeaders headers = modifiableHeaders.build(); @Nullable BodyReader bodyReader = requestHasBody(headers) ? createBodyReader(inputStream, requestLine, headers) : null; return new RawHttpRequest(requestLine, headers, bodyReader, senderAddress); }
/** * Parses the HTTP request produced by the given stream. * * @param inputStream producing a HTTP request * @param senderAddress the address of the request sender, if known * @return a parsed HTTP request object * @throws InvalidHttpRequest if the request is invalid * @throws IOException if a problem occurs accessing the stream */ public RawHttpRequest parseRequest(InputStream inputStream, @Nullable InetAddress senderAddress) throws IOException { RequestLine requestLine = metadataParser.parseRequestLine(inputStream); RawHttpHeaders originalHeaders = metadataParser.parseHeaders(inputStream, (message, lineNumber) -> // add 1 to the line number to correct for the start-line new InvalidHttpRequest(message, lineNumber + 1)); RawHttpHeaders.Builder modifiableHeaders = RawHttpHeaders.newBuilder(originalHeaders); // do a little cleanup to make sure the request is actually valid requestLine = verifyHost(requestLine, modifiableHeaders); RawHttpHeaders headers = modifiableHeaders.build(); @Nullable BodyReader bodyReader = requestHasBody(headers) ? createBodyReader(inputStream, requestLine, headers) : null; return new RawHttpRequest(requestLine, headers, bodyReader, senderAddress); }