UriParamsIter
Added in version 2.66.
- class UriParamsIter(*args, **kwargs)
- Constructors:
UriParamsIter()
Methods
- class UriParamsIter
- init(params: str, length: int, separators: str, flags: UriParamsFlags) None
Initializes an attribute/value pair iterator.
The iterator keeps pointers to the
params
andseparators
arguments, those variables must thus outlive the iterator and not be modified during the iteration.If
WWW_FORM
is passed inflags
,+
characters in the param string will be replaced with spaces in the output. For example,foo=bar+baz
will give attributefoo
with valuebar baz
. This is commonly used on the web (thehttps
andhttp
schemes only), but is deprecated in favour of the equivalent of encoding spaces as`%20`
.Unlike with
parse_params()
,CASE_INSENSITIVE
has no effect if passed toflags
forinit()
. The caller is responsible for doing their own case-insensitive comparisons.GUriParamsIter iter; GError *error = NULL; gchar *unowned_attr, *unowned_value; g_uri_params_iter_init (&iter, "foo=bar&baz=bar&Foo=frob&baz=bar2", -1, "&", G_URI_PARAMS_NONE); while (g_uri_params_iter_next (&iter, &unowned_attr, &unowned_value, &error)) { g_autofree gchar *attr = g_steal_pointer (&unowned_attr); g_autofree gchar *value = g_steal_pointer (&unowned_value); // do something with attr and value; this code will be called 4 times // for the params string in this example: once with attr=foo and value=bar, // then with baz/bar, then Foo/frob, then baz/bar2. } if (error) // handle parsing error
Added in version 2.66.
- Parameters:
params – a
%
-encoded string containingattribute=value
parameterslength – the length of
params
, or-1
if it is nul-terminatedseparators – the separator byte character set between parameters. (usually
&
, but sometimes;
or both&;
). Note that this function works on bytes not characters, so it can’t be used to delimit UTF-8 strings for anything but ASCII characters. You may pass an empty set, in which case no splitting will occur.flags – flags to modify the way the parameters are handled.
- next() tuple[bool, str, str]
Advances
iter
and retrieves the next attribute/value.False
is returned if an error has occurred (in which caseerror
is set), or if the end of the iteration is reached (in which caseattribute
andvalue
are set toNone
and the iterator becomes invalid). IfTrue
is returned,next()
may be called again to receive another attribute/value pair.Note that the same
attribute
may be returned multiple times, since URIs allow repeated attributes.Added in version 2.66.