/** * Create an {@link EagerBodyReader}. * * @param framedBody the framed body * @param inputStream providing the body. The body is consumed immediately * @throws IOException if the inputStream throws */ public EagerBodyReader(FramedBody framedBody, @Nonnull InputStream inputStream) throws IOException { super(framedBody); this.rawInputStream = inputStream; this.rawBytes = framedBody.getBodyConsumer().consume(inputStream); }
/** * Consume the HTTP message body fully, excluding framing metadata. * <p> * For the {@link rawhttp.core.body.FramedBody.Chunked} frame, for example, this method returns only the actual * data which is wrapped into the chunks, but not the chunk-size, attributes and trailer-part. * * @param inputStream the raw input stream * @return the bytes of the data included in the message body * @throws IOException if an error occurs while consuming the message body */ public byte[] consumeData(InputStream inputStream) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); consumeDataInto(inputStream, out, DEFAULT_BUFFER_SIZE); return out.toByteArray(); }
/** * Consume the HTTP message body fully, including any metadata used to frame the body. * * @param inputStream the raw input stream * @return the exact bytes of the message body * @throws IOException if an error occurs while consuming the message body */ public byte[] consume(InputStream inputStream) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); consumeInto(inputStream, out, DEFAULT_BUFFER_SIZE); return out.toByteArray(); }
/** * Consume the HTTP message body fully, including any metadata used to frame the body. * * @param inputStream the raw input stream * @return the exact bytes of the message body * @throws IOException if an error occurs while consuming the message body */ public byte[] consume(InputStream inputStream) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); consumeInto(inputStream, out, DEFAULT_BUFFER_SIZE); return out.toByteArray(); }
/** * Create an {@link EagerBodyReader}. * * @param framedBody the framed body * @param inputStream providing the body. The body is consumed immediately * @throws IOException if the inputStream throws */ public EagerBodyReader(FramedBody framedBody, @Nonnull InputStream inputStream) throws IOException { super(framedBody); this.rawInputStream = inputStream; this.rawBytes = framedBody.getBodyConsumer().consume(inputStream); }
/** * Consume the HTTP message body fully, excluding framing metadata. * <p> * For the {@link rawhttp.core.body.FramedBody.Chunked} frame, for example, this method returns only the actual * data which is wrapped into the chunks, but not the chunk-size, attributes and trailer-part. * * @param inputStream the raw input stream * @return the bytes of the data included in the message body * @throws IOException if an error occurs while consuming the message body */ public byte[] consumeData(InputStream inputStream) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); consumeDataInto(inputStream, out, DEFAULT_BUFFER_SIZE); return out.toByteArray(); }
/** * Read the raw HTTP message body, simultaneously writing it to the given output. * <p> * This method may not validate the full HTTP message before it starts writing it out. * To perform a full validation first, call {@link #eager()} to get an eager reader. * * @param out to write the HTTP body to * @param bufferSize size of the buffer to use for writing, if possible * @throws IOException if an error occurs while writing the message * @see BodyReader#writeDecodedTo(OutputStream, int) */ public void writeTo(OutputStream out, int bufferSize) throws IOException { framedBody.getBodyConsumer().consumeInto(asRawStream(), out, bufferSize); }
/** * @return the raw HTTP message's body as bytes. * <p> * This method does not unframe nor decode the body in case the body is encoded. * To get the decoded body, use * {@link #decodeBody()} or {@link #decodeBodyToString(Charset)}. * @throws IOException if an error occurs while consuming the message body */ public byte[] asRawBytes() throws IOException { return framedBody.getBodyConsumer().consume(asRawStream()); }
/** * Read the HTTP message body, simultaneously unframing and decoding it, * then writing the decoded body to the given output. * <p> * This method may not validate the full HTTP message before it starts writing it out. * To perform a full validation first, call {@link #eager()} to get an eager reader. * * @param out to write the unframed, decoded message body to * @param bufferSize size of the buffer to use for writing, if possible * @throws IOException if an error occurs while writing the message * @throws UnknownEncodingException if the body is encoded with an encoding that is unknown * by the {@link HttpBodyEncodingRegistry}. */ public void writeDecodedTo(OutputStream out, int bufferSize) throws IOException { DecodingOutputStream decodedStream = framedBody.getBodyDecoder().decoding(out); framedBody.getBodyConsumer().consumeDataInto(asRawStream(), decodedStream, bufferSize); decodedStream.finishDecoding(); }
/** * Read the raw HTTP message body, simultaneously writing it to the given output. * <p> * This method may not validate the full HTTP message before it starts writing it out. * To perform a full validation first, call {@link #eager()} to get an eager reader. * * @param out to write the HTTP body to * @param bufferSize size of the buffer to use for writing, if possible * @throws IOException if an error occurs while writing the message * @see BodyReader#writeDecodedTo(OutputStream, int) */ public void writeTo(OutputStream out, int bufferSize) throws IOException { framedBody.getBodyConsumer().consumeInto(asRawStream(), out, bufferSize); }
/** * @return the raw HTTP message's body as bytes. * <p> * This method does not unframe nor decode the body in case the body is encoded. * To get the decoded body, use * {@link #decodeBody()} or {@link #decodeBodyToString(Charset)}. * @throws IOException if an error occurs while consuming the message body */ public byte[] asRawBytes() throws IOException { return framedBody.getBodyConsumer().consume(asRawStream()); }
/** * Read the HTTP message body, simultaneously unframing and decoding it, * then writing the decoded body to the given output. * <p> * This method may not validate the full HTTP message before it starts writing it out. * To perform a full validation first, call {@link #eager()} to get an eager reader. * * @param out to write the unframed, decoded message body to * @param bufferSize size of the buffer to use for writing, if possible * @throws IOException if an error occurs while writing the message * @throws UnknownEncodingException if the body is encoded with an encoding that is unknown * by the {@link HttpBodyEncodingRegistry}. */ public void writeDecodedTo(OutputStream out, int bufferSize) throws IOException { DecodingOutputStream decodedStream = framedBody.getBodyDecoder().decoding(out); framedBody.getBodyConsumer().consumeDataInto(asRawStream(), decodedStream, bufferSize); decodedStream.finishDecoding(); }