Home | History | Annotate | Download | only in httputil
      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.
      7 package httputil
      8 
      9 import (
     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.
     20 func NewChunkedReader(r io.Reader) io.Reader {
     21 	return 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.
     27 //
     28 // NewChunkedWriter is not needed by normal applications. The http
     29 // package adds chunking automatically if handlers don't set a
     30 // Content-Length header. Using NewChunkedWriter inside a handler
     31 // would result in double chunking or chunking with a Content-Length
     32 // length, both of which are wrong.
     33 func NewChunkedWriter(w io.Writer) io.WriteCloser {
     34 	return internal.NewChunkedWriter(w)
     35 }
     36 
     37 // ErrLineTooLong is returned when reading malformed chunked data
     38 // with lines that are too long.
     39 var ErrLineTooLong = internal.ErrLineTooLong
     40