content_type.go (1235B)
1 package http 2 3 import ( 4 "context" 5 "fmt" 6 "github.com/aws/smithy-go/middleware" 7 smithyhttp "github.com/aws/smithy-go/transport/http" 8 ) 9 10 // removeContentTypeHeader is a build middleware that removes 11 // content type header if content-length header is unset or 12 // is set to zero, 13 type removeContentTypeHeader struct { 14 } 15 16 // ID the name of the middleware. 17 func (m *removeContentTypeHeader) ID() string { 18 return "RemoveContentTypeHeader" 19 } 20 21 // HandleBuild adds or appends the constructed user agent to the request. 22 func (m *removeContentTypeHeader) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( 23 out middleware.BuildOutput, metadata middleware.Metadata, err error, 24 ) { 25 req, ok := in.Request.(*smithyhttp.Request) 26 if !ok { 27 return out, metadata, fmt.Errorf("unknown transport type %T", in) 28 } 29 30 // remove contentTypeHeader when content-length is zero 31 if req.ContentLength == 0 { 32 req.Header.Del("content-type") 33 } 34 35 return next.HandleBuild(ctx, in) 36 } 37 38 // RemoveContentTypeHeader removes content-type header if 39 // content length is unset or equal to zero. 40 func RemoveContentTypeHeader(stack *middleware.Stack) error { 41 return stack.Build.Add(&removeContentTypeHeader{}, middleware.After) 42 }