package http
import (
)
type RequestResponseLogger struct {
LogRequest bool
LogRequestWithBody bool
LogResponse bool
LogResponseWithBody bool
}
func ( *RequestResponseLogger) () string {
return "RequestResponseLogger"
}
func ( *RequestResponseLogger) (
context.Context, middleware.DeserializeInput, middleware.DeserializeHandler,
) (
middleware.DeserializeOutput, middleware.Metadata, error,
) {
:= middleware.GetLogger()
if .LogRequest || .LogRequestWithBody {
, := .Request.(*Request)
if ! {
return , , fmt.Errorf("unknown transport type %T", )
}
:= .Build()
, := httputil.DumpRequestOut(, .LogRequestWithBody)
if != nil {
return , ,
}
.Logf(logging.Debug, "Request\n%v", string())
if .LogRequestWithBody {
, = .SetStream(.Body)
if != nil {
return , ,
}
.Request =
}
}
, , = .HandleDeserialize(, )
if ( == nil) && (.LogResponse || .LogResponseWithBody) {
, := .RawResponse.(*Response)
if ! {
return , , fmt.Errorf("unknown transport type %T", .RawResponse)
}
, := httputil.DumpResponse(.Response, .LogResponseWithBody)
if != nil {
return , , fmt.Errorf("failed to dump response %w", )
}
.Logf(logging.Debug, "Response\n%v", string())
}
return , ,
}