Skip to content

Commit

Permalink
chore(jsonschema): log HTTP requests in debug mode
Browse files Browse the repository at this point in the history
  • Loading branch information
tdakkota committed Nov 3, 2022
1 parent 4355753 commit 82109c8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
6 changes: 5 additions & 1 deletion cmd/ogen/main.go
Expand Up @@ -150,6 +150,7 @@ func parseSpecPath(
p string,
client *http.Client,
readFile func(string) ([]byte, error),
logger *zap.Logger,
) (f file, opts gen.RemoteOptions, _ error) {
// FIXME(tdakkota): pass context.
if u, _ := url.Parse(p); u != nil {
Expand Down Expand Up @@ -177,10 +178,11 @@ func parseSpecPath(
rootURL: u,
}
opts = gen.RemoteOptions{
HTTPClient: client,
ReadFile: func(p string) ([]byte, error) {
return nil, errors.New("local files are not supported in remote mode")
},
HTTPClient: client,
Logger: logger,
}
return f, opts, nil
case "":
Expand Down Expand Up @@ -208,6 +210,7 @@ func parseSpecPath(
opts = gen.RemoteOptions{
HTTPClient: client,
ReadFile: readFile,
Logger: logger,
}

return f, opts, nil
Expand Down Expand Up @@ -336,6 +339,7 @@ func run() error {
specPath,
&http.Client{Timeout: time.Minute},
os.ReadFile,
logger.Named("remote"),
)
if err != nil {
return err
Expand Down
15 changes: 15 additions & 0 deletions jsonschema/external.go
Expand Up @@ -6,8 +6,10 @@ import (
"net/http"
"net/url"
"os"
"time"

"github.com/go-faster/errors"
"go.uber.org/zap"
)

// ExternalResolver resolves external links.
Expand All @@ -31,6 +33,8 @@ type ExternalOptions struct {
HTTPClient *http.Client
// ReadFile sets function for reading files from fs. Defaults to os.ReadFile.
ReadFile func(p string) ([]byte, error)
// Logger sets logger to use. Defaults to zap.NewNop().
Logger *zap.Logger
}

func (r *ExternalOptions) setDefaults() {
Expand All @@ -40,13 +44,17 @@ func (r *ExternalOptions) setDefaults() {
if r.ReadFile == nil {
r.ReadFile = os.ReadFile
}
if r.Logger == nil {
r.Logger = zap.NewNop()
}
}

var _ ExternalResolver = externalResolver{}

type externalResolver struct {
client *http.Client
readFile func(p string) ([]byte, error)
logger *zap.Logger
}

// NewExternalResolver creates new ExternalResolver.
Expand All @@ -58,6 +66,7 @@ func NewExternalResolver(opts ExternalOptions) ExternalResolver {
return externalResolver{
client: opts.HTTPClient,
readFile: opts.ReadFile,
logger: opts.Logger,
}
}

Expand All @@ -70,6 +79,7 @@ func (e externalResolver) httpGet(ctx context.Context, u *url.URL) ([]byte, erro
req.SetBasicAuth(u.User.Username(), pass)
}

start := time.Now()
resp, err := e.client.Do(req)
if err != nil {
return nil, errors.Wrap(err, "do")
Expand All @@ -79,6 +89,11 @@ func (e externalResolver) httpGet(ctx context.Context, u *url.URL) ([]byte, erro
_ = resp.Body.Close()
}
}()
e.logger.Debug("Get",
zap.String("url", u.Redacted()),
zap.Int("status", resp.StatusCode),
zap.Duration("duration", time.Since(start)),
)

if code := resp.StatusCode; code >= 299 {
text := http.StatusText(code)
Expand Down

0 comments on commit 82109c8

Please sign in to comment.