netramesh
1// Copyright 2014 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Package httputil provides HTTP utility functions, complementing the
6// more common ones in the net/http package.
7package httputil8
9import (10"io"11"net/http/internal"12)
13
14// NewChunkedReader returns a new chunkedReader that translates the data read from r
15// out of HTTP "chunked" format before returning it.
16// The chunkedReader returns io.EOF when the final 0-length chunk is read.
17//
18// NewChunkedReader is not needed by normal applications. The http package
19// automatically decodes chunking when reading response bodies.
20func NewChunkedReader(r io.Reader) io.Reader {21return internal.NewChunkedReader(r)22}
23
24// NewChunkedWriter returns a new chunkedWriter that translates writes into HTTP
25// "chunked" format before writing them to w. Closing the returned chunkedWriter
26// sends the final 0-length chunk that marks the end of the stream but does
27// not send the final CRLF that appears after trailers; trailers and the last
28// CRLF must be written separately.
29//
30// NewChunkedWriter is not needed by normal applications. The http
31// package adds chunking automatically if handlers don't set a
32// Content-Length header. Using NewChunkedWriter inside a handler
33// would result in double chunking or chunking with a Content-Length
34// length, both of which are wrong.
35func NewChunkedWriter(w io.Writer) io.WriteCloser {36return internal.NewChunkedWriter(w)37}
38
39// ErrLineTooLong is returned when reading malformed chunked data
40// with lines that are too long.
41var ErrLineTooLong = internal.ErrLineTooLong42