Add debug flag to gitiles client.
Change-Id: I2fe5a033883c838aa98d690e282483266400c5bd
diff --git a/gitiles/client.go b/gitiles/client.go
index b5fd5e2..8bc070c 100644
--- a/gitiles/client.go
+++ b/gitiles/client.go
@@ -26,6 +26,7 @@
"net/http"
"net/url"
"path"
+ "strings"
"github.com/google/slothfs/cookie"
"golang.org/x/net/context"
@@ -39,6 +40,7 @@
client http.Client
agent string
jar http.CookieJar
+ debug bool
}
// Addr returns the address of the gitiles service.
@@ -59,6 +61,8 @@
// UserAgent defines how we present ourself to the server.
UserAgent string
+
+ Debug bool
}
var defaultOptions Options
@@ -70,6 +74,7 @@
flag.StringVar(&defaultOptions.CookieJar, "gitiles_cookies", "", "Set path to cURL-style cookie jar file.")
flag.StringVar(&defaultOptions.UserAgent, "gitiles_agent", "slothfs", "Set the User-Agent string to report to Gitiles.")
flag.Float64Var(&defaultOptions.SustainedQPS, "gitiles_qps", 4, "Set the maximum QPS to send to Gitiles.")
+ flag.BoolVar(&defaultOptions.Debug, "gitiles_debug", false, "Print URLs as they are fetched.")
return &defaultOptions
}
@@ -111,6 +116,7 @@
req.Header.Set("User-Agent", s.agent)
return nil
}
+ s.debug = opts.Debug
return s, nil
}
@@ -134,6 +140,10 @@
if resp.StatusCode != 200 {
return nil, fmt.Errorf("%s: %s", u.String(), resp.Status)
}
+
+ if s.debug {
+ log.Printf("%s %s: %d", req.Method, req.URL, resp.StatusCode)
+ }
if got := resp.Request.URL.String(); got != u.String() {
// We accept redirects, but only for authentication.
// If we get a 200 from a different page than we
@@ -231,7 +241,7 @@
func (s *RepoService) GetTree(branch, dir string, recursive bool) (*Tree, error) {
jsonURL := s.service.addr
jsonURL.Path = path.Join(jsonURL.Path, s.Name, "+", branch, dir)
- if dir == "" {
+ if !strings.HasSuffix(jsonURL.Path, "/") {
jsonURL.Path += "/"
}
jsonURL.RawQuery = "format=JSON&long=1"