summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-05-08 22:01:07 +0200
committerMartin Polden <mpolden@mpolden.no>2023-05-08 22:01:07 +0200
commitd288145716df1e5ca723b4afe9b35097a6639ad8 (patch)
tree5c1e0d3cda50c040253f6e777dca2352a8ba756a
parent60a1531f892866d33bef204350a18c7738de0700 (diff)
Skip query escape when safe
-rw-r--r--client/go/internal/vespa/document/http.go18
1 files changed, 11 insertions, 7 deletions
diff --git a/client/go/internal/vespa/document/http.go b/client/go/internal/vespa/document/http.go
index df1e892d5f8..852885a5270 100644
--- a/client/go/internal/vespa/document/http.go
+++ b/client/go/internal/vespa/document/http.go
@@ -90,7 +90,7 @@ func NewClient(options ClientOptions, httpClients []util.HTTPClient) (*Client, e
return c, nil
}
-func writeQueryParam(sb *strings.Builder, start int, k, v string) {
+func writeQueryParam(sb *strings.Builder, start int, escape bool, k, v string) {
if sb.Len() == start {
sb.WriteString("?")
} else {
@@ -98,7 +98,11 @@ func writeQueryParam(sb *strings.Builder, start int, k, v string) {
}
sb.WriteString(k)
sb.WriteString("=")
- sb.WriteString(url.QueryEscape(v))
+ if escape {
+ sb.WriteString(url.QueryEscape(v))
+ } else {
+ sb.WriteString(v)
+ }
}
func writeRequestBody(w io.Writer, body []byte) error {
@@ -145,19 +149,19 @@ func (c *Client) methodAndURL(d Document) (string, string) {
// Query part
queryStart := sb.Len()
if c.options.Timeout > 0 {
- writeQueryParam(&sb, queryStart, "timeout", strconv.FormatInt(c.options.Timeout.Milliseconds(), 10)+"ms")
+ writeQueryParam(&sb, queryStart, false, "timeout", strconv.FormatInt(c.options.Timeout.Milliseconds(), 10)+"ms")
}
if c.options.Route != "" {
- writeQueryParam(&sb, queryStart, "route", c.options.Route)
+ writeQueryParam(&sb, queryStart, true, "route", c.options.Route)
}
if c.options.TraceLevel > 0 {
- writeQueryParam(&sb, queryStart, "tracelevel", strconv.Itoa(c.options.TraceLevel))
+ writeQueryParam(&sb, queryStart, false, "tracelevel", strconv.Itoa(c.options.TraceLevel))
}
if d.Condition != "" {
- writeQueryParam(&sb, queryStart, "condition", d.Condition)
+ writeQueryParam(&sb, queryStart, true, "condition", d.Condition)
}
if d.Create {
- writeQueryParam(&sb, queryStart, "create", "true")
+ writeQueryParam(&sb, queryStart, false, "create", "true")
}
return httpMethod, sb.String()
}