─── Parameter parsing ──────────────────────────────────────────────────────── parseQueryString parses a query string of the form "key=value&key=value…". Returns an error if any key or value violates the grammar (syntax only). Known-parameter value validation is performed separately by ValidateKnown
(raw string)
| 303 | // Returns an error if any key or value violates the grammar (syntax only). |
| 304 | // Known-parameter value validation is performed separately by ValidateKnownParams. |
| 305 | func parseQueryString(raw string) (map[string]string, error) { |
| 306 | params := map[string]string{} |
| 307 | for pair := range strings.SplitSeq(raw, "&") { |
| 308 | if pair == "" { |
| 309 | return nil, fmt.Errorf("model identifier: empty parameter pair in query string %q", raw) |
| 310 | } |
| 311 | k, v, found := strings.Cut(pair, "=") |
| 312 | if !found { |
| 313 | return nil, fmt.Errorf("model identifier: parameter %q is missing '=' separator", pair) |
| 314 | } |
| 315 | if err := validateParamKey(k); err != nil { |
| 316 | return nil, err |
| 317 | } |
| 318 | if err := validateParamValue(v); err != nil { |
| 319 | return nil, err |
| 320 | } |
| 321 | params[k] = v |
| 322 | } |
| 323 | return params, nil |
| 324 | } |
| 325 | |
| 326 | // validateParamKey validates a parameter key per the ABNF grammar. |
| 327 | func validateParamKey(key string) error { |
no test coverage detected