You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
// Copyright 2019 Drone.IO Inc. All rights reserved.
|
|
// Use of this source code is governed by the Polyform License
|
|
// that can be found in the LICENSE file.
|
|
|
|
package logger
|
|
|
|
import (
|
|
"io"
|
|
"net/http"
|
|
"net/http/httputil"
|
|
"os"
|
|
)
|
|
|
|
// Dumper dumps the http.Request and http.Response
|
|
// message payload for debugging purposes.
|
|
type Dumper interface {
|
|
DumpRequest(*http.Request)
|
|
DumpResponse(*http.Response)
|
|
}
|
|
|
|
// DiscardDumper returns a no-op dumper.
|
|
func DiscardDumper() Dumper {
|
|
return new(discardDumper)
|
|
}
|
|
|
|
type discardDumper struct{}
|
|
|
|
func (*discardDumper) DumpRequest(*http.Request) {}
|
|
func (*discardDumper) DumpResponse(*http.Response) {}
|
|
|
|
// StandardDumper returns a standard dumper.
|
|
func StandardDumper(body bool) Dumper {
|
|
return &standardDumper{out: os.Stdout, body: body}
|
|
}
|
|
|
|
type standardDumper struct {
|
|
body bool
|
|
out io.Writer
|
|
}
|
|
|
|
func (s *standardDumper) DumpRequest(req *http.Request) {
|
|
dump, _ := httputil.DumpRequestOut(req, s.body)
|
|
s.out.Write(dump)
|
|
}
|
|
|
|
func (s *standardDumper) DumpResponse(res *http.Response) {
|
|
dump, _ := httputil.DumpResponse(res, s.body)
|
|
s.out.Write(dump)
|
|
}
|