package http
import (
)
func ( *middleware.Stack) error {
return .Deserialize.Insert(&errorCloseResponseBodyMiddleware{}, "OperationDeserializer", middleware.Before)
}
type errorCloseResponseBodyMiddleware struct{}
func (*errorCloseResponseBodyMiddleware) () string {
return "ErrorCloseResponseBody"
}
func ( *errorCloseResponseBodyMiddleware) (
context.Context, middleware.DeserializeInput, middleware.DeserializeHandler,
) (
middleware.DeserializeOutput, middleware.Metadata, error,
) {
, , := .HandleDeserialize(, )
if != nil {
if , := .RawResponse.(*Response); && != nil && .Body != nil {
_, _ = io.Copy(ioutil.Discard, .Body)
.Body.Close()
}
}
return , ,
}
func ( *middleware.Stack) error {
return .Deserialize.Insert(&closeResponseBody{}, "OperationDeserializer", middleware.Before)
}
type closeResponseBody struct{}
func (*closeResponseBody) () string {
return "CloseResponseBody"
}
func ( *closeResponseBody) (
context.Context, middleware.DeserializeInput, middleware.DeserializeHandler,
) (
middleware.DeserializeOutput, middleware.Metadata, error,
) {
, , := .HandleDeserialize(, )
if != nil {
return , ,
}
if , := .RawResponse.(*Response); {
, := io.Copy(ioutil.Discard, .Body)
if != nil {
middleware.GetLogger().Logf(logging.Warn, "failed to discard remaining HTTP response body, this may affect connection reuse")
}
:= .Body.Close()
if != nil {
middleware.GetLogger().Logf(logging.Warn, "failed to close HTTP response body, this may affect connection reuse")
}
}
return , ,
}