Skip to content

Commit

Permalink
Merge pull request #670 from ericchiang/example-app-debug
Browse files Browse the repository at this point in the history
cmd/example-app: add a --debug flag
  • Loading branch information
ericchiang committed Nov 4, 2016
2 parents ce703a7 + 35d6423 commit d86a774
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions cmd/example-app/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"log"
"net"
"net/http"
"net/http/httputil"
"net/url"
"os"
"strings"
Expand Down Expand Up @@ -62,6 +63,31 @@ func httpClientForRootCAs(rootCAs string) (*http.Client, error) {
}, 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 {
var (
a app
Expand All @@ -70,6 +96,7 @@ func cmd() *cobra.Command {
tlsCert string
tlsKey string
rootCAs string
debug bool
)
c := cobra.Command{
Use: "example-app",
Expand Down Expand Up @@ -101,6 +128,17 @@ func cmd() *cobra.Command {
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
provider, err := oidc.NewProvider(a.ctx, issuerURL)
if err != nil {
Expand Down Expand Up @@ -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(&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().BoolVar(&debug, "debug", false, "Print all request and responses from the OpenID Connect issuer.")
return &c
}

Expand Down

0 comments on commit d86a774

Please sign in to comment.