4 changed files with 40 additions and 1 deletions
			
			
		| @ -0,0 +1,33 @@ | |||||
|  | package requestbody | ||||
|  | 
 | ||||
|  | import ( | ||||
|  | 	"net/http" | ||||
|  | 
 | ||||
|  | 	"bitbucket.org/lightcodelabs/caddy2" | ||||
|  | 	"bitbucket.org/lightcodelabs/caddy2/modules/caddyhttp" | ||||
|  | ) | ||||
|  | 
 | ||||
|  | func init() { | ||||
|  | 	caddy2.RegisterModule(caddy2.Module{ | ||||
|  | 		Name: "http.middleware.request_body", | ||||
|  | 		New:  func() interface{} { return new(RequestBody) }, | ||||
|  | 	}) | ||||
|  | } | ||||
|  | 
 | ||||
|  | // RequestBody is a middleware for manipulating the request body.
 | ||||
|  | type RequestBody struct { | ||||
|  | 	MaxSize int64 `json:"max_size,omitempty"` | ||||
|  | } | ||||
|  | 
 | ||||
|  | func (rb RequestBody) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) error { | ||||
|  | 	if r.Body == nil { | ||||
|  | 		return next.ServeHTTP(w, r) | ||||
|  | 	} | ||||
|  | 	if rb.MaxSize > 0 { | ||||
|  | 		r.Body = http.MaxBytesReader(w, r.Body, rb.MaxSize) | ||||
|  | 	} | ||||
|  | 	return next.ServeHTTP(w, r) | ||||
|  | } | ||||
|  | 
 | ||||
|  | // Interface guard
 | ||||
|  | var _ caddyhttp.MiddlewareHandler = (*RequestBody)(nil) | ||||
					Loading…
					
					
				
		Reference in new issue