| // Copyright 2014 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // Package httputil provides HTTP utility functions, complementing the | |
| // more common ones in the net/http package. | |
| package httputil | |
| import ( | |
| "io" | |
| "net/http/internal" | |
| ) | |
| // NewChunkedReader returns a new chunkedReader that translates the data read from r | |
| // out of HTTP "chunked" format before returning it. | |
| // The chunkedReader returns [io.EOF] when the final 0-length chunk is read. | |
| // | |
| // NewChunkedReader is not needed by normal applications. The http package | |
| // automatically decodes chunking when reading response bodies. | |
| func NewChunkedReader(r io.Reader) io.Reader { | |
| return internal.NewChunkedReader(r) | |
| } | |
| // NewChunkedWriter returns a new chunkedWriter that translates writes into HTTP | |
| // "chunked" format before writing them to w. Closing the returned chunkedWriter | |
| // sends the final 0-length chunk that marks the end of the stream but does | |
| // not send the final CRLF that appears after trailers; trailers and the last | |
| // CRLF must be written separately. | |
| // | |
| // NewChunkedWriter is not needed by normal applications. The http | |
| // package adds chunking automatically if handlers don't set a | |
| // Content-Length header. Using NewChunkedWriter inside a handler | |
| // would result in double chunking or chunking with a Content-Length | |
| // length, both of which are wrong. | |
| func NewChunkedWriter(w io.Writer) io.WriteCloser { | |
| return internal.NewChunkedWriter(w) | |
| } | |
| // ErrLineTooLong is returned when reading malformed chunked data | |
| // with lines that are too long. | |
| var ErrLineTooLong = internal.ErrLineTooLong | |