Use HTTP header to decide between JSON and Base64 encoding
Change-Id: I5b756b93b7587c8533c92f2507c31591737f7d34
diff --git a/fs/gitilesfs_test.go b/fs/gitilesfs_test.go
index b004a37..b57613d 100644
--- a/fs/gitilesfs_test.go
+++ b/fs/gitilesfs_test.go
@@ -180,12 +180,12 @@
out := []byte(resp)
if strings.Contains(r.URL.String(), "format=TEXT") {
+ w.Header().Set("Content-Type", "text/html; charset=UTF-8")
str := base64.StdEncoding.EncodeToString(out)
w.Write([]byte(str))
} else {
w.Write([]byte(resp))
}
- // TODO(hanwen): set content type?
}
func newTestServer() (*testServer, error) {
diff --git a/gitiles/client.go b/gitiles/client.go
index 10cb86a..4777d0e 100644
--- a/gitiles/client.go
+++ b/gitiles/client.go
@@ -86,6 +86,12 @@
if err != nil {
return nil, err
}
+
+ if resp.Header.Get("Content-Type") == "text/html; charset=UTF-8" {
+ out := make([]byte, base64.StdEncoding.DecodedLen(len(c)))
+ n, err := base64.StdEncoding.Decode(out, c)
+ return out[:n], err
+ }
return c, nil
}
@@ -153,15 +159,7 @@
// TODO(hanwen): invent a more structured mechanism for logging.
log.Println(blobURL.String())
- c, err := s.service.get(blobURL)
- if err != nil {
- return nil, err
- }
-
- out := make([]byte, base64.StdEncoding.DecodedLen(len(c)))
- n, err := base64.StdEncoding.Decode(out, c)
-
- return out[:n], err
+ return s.service.get(blobURL)
}
// GetTree fetches a tree. The dir argument may not point to a