package limiter import ( "io" "net/http" ) // Limiter defines an interface that implementors can use to rate limit I/O // according to some policy defined and configured by the implementor. type Limiter interface { // Upstream returns a rate limited reader that is intended to be used in // uploads. Upstream(r io.Reader) io.Reader // UpstreamWriter returns a rate limited writer that is intended to be used // in uploads. UpstreamWriter(w io.Writer) io.Writer // Downstream returns a rate limited reader that is intended to be used // for downloads. Downstream(r io.Reader) io.Reader // Transport returns an http.RoundTripper limited with the limiter. Transport(http.RoundTripper) http.RoundTripper }