Parses a raw query string into a QueryParams instance. The input is split on '&' and each parameter is parsed as either a key/value pair (if it contains an equals sign) or a "lone" key (if it does not). No valid RFC 3986 query component will fail to parse. For example, {@code
(@Nullable String rawQuery)
| 93 | * @return a new instance of {@code QueryParams} representing the input |
| 94 | */ |
| 95 | public static QueryParams fromRawQuery(@Nullable String rawQuery) { |
| 96 | QueryParams params = new QueryParams(); |
| 97 | if (rawQuery != null) { |
| 98 | for (String part : Splitter.on('&').split(rawQuery)) { |
| 99 | int equalsIndex = part.indexOf('='); |
| 100 | if (equalsIndex == -1) { |
| 101 | params.entries.add(Entry.forRawLoneKey(part)); |
| 102 | } else { |
| 103 | String rawKey = part.substring(0, equalsIndex); |
| 104 | String rawValue = part.substring(equalsIndex + 1); |
| 105 | params.entries.add(Entry.forRawKeyValue(rawKey, rawValue)); |
| 106 | } |
| 107 | } |
| 108 | } |
| 109 | return params; |
| 110 | } |
| 111 | |
| 112 | /** |
| 113 | * Returns a mutable list view of the query parameters. |