aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/dashapi/dashapi.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-03-08 13:00:10 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-03-08 13:00:10 +0100
commit8240eedfec5f875dbeec25d50d4e307d1d606d72 (patch)
tree88d97e05769c8ffbab720e1a92179f73508ff9cd /dashboard/dashapi/dashapi.go
parentb0d99d1ebba0827d4ef2559f95b94bf7d941a2cf (diff)
dashboard/app: switch API to passing args as form-encoded values
This is slightly more secure and does not pollute URLs.
Diffstat (limited to 'dashboard/dashapi/dashapi.go')
-rw-r--r--dashboard/dashapi/dashapi.go35
1 files changed, 10 insertions, 25 deletions
diff --git a/dashboard/dashapi/dashapi.go b/dashboard/dashapi/dashapi.go
index 6b1f6ab7b..080546343 100644
--- a/dashboard/dashapi/dashapi.go
+++ b/dashboard/dashapi/dashapi.go
@@ -339,41 +339,26 @@ func Query(client, addr, key, method string, ctor RequestCtor, doer RequestDoer,
values.Add("client", client)
values.Add("key", key)
values.Add("method", method)
- var body io.Reader
- gzipped := false
if req != nil {
data, err := json.Marshal(req)
if err != nil {
return fmt.Errorf("failed to marshal request: %v", err)
}
- if len(data) < 100 || addr == "" || strings.HasPrefix(addr, "http://localhost:") {
- // Don't bother compressing tiny requests.
- // Don't compress for dev_appserver which does not support gzip.
- body = bytes.NewReader(data)
- } else {
- buf := new(bytes.Buffer)
- gz := gzip.NewWriter(buf)
- if _, err := gz.Write(data); err != nil {
- return err
- }
- if err := gz.Close(); err != nil {
- return err
- }
- body = buf
- gzipped = true
+ buf := new(bytes.Buffer)
+ gz := gzip.NewWriter(buf)
+ if _, err := gz.Write(data); err != nil {
+ return err
}
+ if err := gz.Close(); err != nil {
+ return err
+ }
+ values.Add("payload", buf.String())
}
- url := fmt.Sprintf("%v/api?%v", addr, values.Encode())
- r, err := ctor("POST", url, body)
+ r, err := ctor("POST", fmt.Sprintf("%v/api", addr), strings.NewReader(values.Encode()))
if err != nil {
return err
}
- if body != nil {
- r.Header.Set("Content-Type", "application/json")
- if gzipped {
- r.Header.Set("Content-Encoding", "gzip")
- }
- }
+ r.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := doer(r)
if err != nil {
return fmt.Errorf("http request failed: %v", err)