pkg/middleware/queryparam_policy.go (28 lines of code) (raw):

package middleware import ( "fmt" "net/http" "net/url" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" ) type QueryParameterPolicy struct { Name string Value string Replace bool } func (p *QueryParameterPolicy) Do(req *policy.Request) (*http.Response, error) { if !p.Replace { // append behavior if req.Raw().URL.RawQuery != "" { req.Raw().URL.RawQuery += "&" } req.Raw().URL.RawQuery += url.QueryEscape(p.Name) + "=" + url.QueryEscape(p.Value) return req.Next() } // replace behavior originalQueryParams, err := url.ParseQuery(req.Raw().URL.RawQuery) if err != nil { return nil, fmt.Errorf("cannot replace url query parameter due to parsing err: %w", err) } originalQueryParams.Set(p.Name, p.Value) req.Raw().URL.RawQuery = originalQueryParams.Encode() return req.Next() }