package http
import (
)
type isContentTypeAutoSet struct{}
func ( context.Context, bool) context.Context {
return context.WithValue(, isContentTypeAutoSet{}, )
}
func ( context.Context) bool {
, := .Value(isContentTypeAutoSet{}).(bool)
return
}
func ( *middleware.Stack) ( error) {
= .Serialize.Insert(removeDefaultContentType{},
"OperationSerializer", middleware.After)
if != nil {
return fmt.Errorf("failed to add %s serialize middleware, %w",
removeDefaultContentType{}.ID(), )
}
return nil
}
func ( *middleware.Stack) ( error) {
_, = .Serialize.Remove(removeDefaultContentType{}.ID())
if != nil {
return fmt.Errorf("failed to remove %s serialize middleware, %w",
removeDefaultContentType{}.ID(), )
}
return nil
}
type removeDefaultContentType struct{}
func (removeDefaultContentType) () string { return "RemoveDefaultContentType" }
func (removeDefaultContentType) (
context.Context, middleware.SerializeInput, middleware.SerializeHandler,
) (
middleware.SerializeOutput, middleware.Metadata, error,
) {
, := .Request.(*Request)
if ! {
return , , fmt.Errorf(
"unexpected request type %T for removeDefaultContentType middleware",
.Request)
}
if GetIsContentTypeDefaultValue() && .GetStream() == nil {
.Header.Del("Content-Type")
.Request =
}
return .HandleSerialize(, )
}
type headerValue struct {
header string
value string
append bool
}
type headerValueHelper struct {
headerValues []headerValue
}
func ( *headerValueHelper) ( headerValue) {
.headerValues = append(.headerValues, )
}
func ( *headerValueHelper) () string {
return "HTTPHeaderHelper"
}
func ( *headerValueHelper) ( context.Context, middleware.BuildInput, middleware.BuildHandler) ( middleware.BuildOutput, middleware.Metadata, error) {
, := .Request.(*Request)
if ! {
return , , fmt.Errorf("unknown transport type %T", .Request)
}
for , := range .headerValues {
if .append {
.Header.Add(.header, .value)
} else {
.Header.Set(.header, .value)
}
}
return .HandleBuild(, )
}
func ( *middleware.Stack) (*headerValueHelper, error) {
:= (*headerValueHelper)(nil).ID()
, := .Build.Get()
if ! {
= &headerValueHelper{}
:= .Build.Add(, middleware.After)
if != nil {
return nil,
}
}
, := .(*headerValueHelper)
if ! {
return nil, fmt.Errorf("%T for %s middleware did not match expected type", , )
}
return , nil
}
func ( string, string) func( *middleware.Stack) error {
return func( *middleware.Stack) error {
, := getOrAddHeaderValueHelper()
if != nil {
return
}
.addHeaderValue(headerValue{header: , value: , append: true})
return nil
}
}
func ( string, string) func( *middleware.Stack) error {
return func( *middleware.Stack) error {
, := getOrAddHeaderValueHelper()
if != nil {
return
}
.addHeaderValue(headerValue{header: , value: , append: false})
return nil
}
}