cmd/example-app: add a --debug flag
This commit is contained in:
parent
ce703a7fe1
commit
35d6423ac2
1 changed files with 39 additions and 0 deletions
|
@ -11,6 +11,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/httputil"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -62,6 +63,31 @@ func httpClientForRootCAs(rootCAs string) (*http.Client, error) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type debugTransport struct {
|
||||||
|
t http.RoundTripper
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d debugTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
reqDump, err := httputil.DumpRequest(req, true)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
log.Printf("%s", reqDump)
|
||||||
|
|
||||||
|
resp, err := d.t.RoundTrip(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
respDump, err := httputil.DumpResponse(resp, true)
|
||||||
|
if err != nil {
|
||||||
|
resp.Body.Close()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
log.Printf("%s", respDump)
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
func cmd() *cobra.Command {
|
func cmd() *cobra.Command {
|
||||||
var (
|
var (
|
||||||
a app
|
a app
|
||||||
|
@ -70,6 +96,7 @@ func cmd() *cobra.Command {
|
||||||
tlsCert string
|
tlsCert string
|
||||||
tlsKey string
|
tlsKey string
|
||||||
rootCAs string
|
rootCAs string
|
||||||
|
debug bool
|
||||||
)
|
)
|
||||||
c := cobra.Command{
|
c := cobra.Command{
|
||||||
Use: "example-app",
|
Use: "example-app",
|
||||||
|
@ -101,6 +128,17 @@ func cmd() *cobra.Command {
|
||||||
a.ctx = context.WithValue(a.ctx, oauth2.HTTPClient, client)
|
a.ctx = context.WithValue(a.ctx, oauth2.HTTPClient, client)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if debug {
|
||||||
|
client, ok := a.ctx.Value(oauth2.HTTPClient).(*http.Client)
|
||||||
|
if ok {
|
||||||
|
client.Transport = debugTransport{client.Transport}
|
||||||
|
} else {
|
||||||
|
a.ctx = context.WithValue(a.ctx, oauth2.HTTPClient, &http.Client{
|
||||||
|
Transport: debugTransport{http.DefaultTransport},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(ericchiang): Retry with backoff
|
// TODO(ericchiang): Retry with backoff
|
||||||
provider, err := oidc.NewProvider(a.ctx, issuerURL)
|
provider, err := oidc.NewProvider(a.ctx, issuerURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -161,6 +199,7 @@ func cmd() *cobra.Command {
|
||||||
c.Flags().StringVar(&tlsCert, "tls-cert", "", "X509 cert file to present when serving HTTPS.")
|
c.Flags().StringVar(&tlsCert, "tls-cert", "", "X509 cert file to present when serving HTTPS.")
|
||||||
c.Flags().StringVar(&tlsKey, "tls-key", "", "Private key for the HTTPS cert.")
|
c.Flags().StringVar(&tlsKey, "tls-key", "", "Private key for the HTTPS cert.")
|
||||||
c.Flags().StringVar(&rootCAs, "issuer-root-ca", "", "Root certificate authorities for the issuer. Defaults to host certs.")
|
c.Flags().StringVar(&rootCAs, "issuer-root-ca", "", "Root certificate authorities for the issuer. Defaults to host certs.")
|
||||||
|
c.Flags().BoolVar(&debug, "debug", false, "Print all request and responses from the OpenID Connect issuer.")
|
||||||
return &c
|
return &c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue