URI¶
- 
struct 
SerdURIView¶ A parsed URI.
This URI representation is designed for fast streaming, it allows creating relative URI references or resolving them into absolute URIs in-place without any string allocation.
Each component refers to slices in other strings, so a URI view must outlive any strings it was parsed from. The components are not necessarily null-terminated.
The scheme, authority, path, query, and fragment simply point to the string value of those components, not including any delimiters. The path_prefix is a special component for storing relative or resolved paths. If it points to a string (usually a base URI the URI was resolved against), then this string is prepended to the path. Otherwise, the length is interpret as the number of up-references (“../”) that must be prepended to the path.
- 
SerdStringView 
scheme¶ Scheme.
Authority.
- 
SerdStringView 
path_prefix¶ Path prefix for relative/resolved paths.
- 
SerdStringView 
path¶ Path suffix.
- 
SerdStringView 
query¶ Query.
- 
SerdStringView 
fragment¶ Fragment.
- 
SerdStringView 
 
- 
const SerdURIView 
SERD_URI_NULL¶ 
- 
bool 
serd_uri_string_has_scheme(const char *string)¶ Return true iff
stringstarts with a valid URI scheme.
- 
SerdURIView 
serd_parse_uri(const char *string)¶ Parse
stringand return a URI view that points into it.
- 
char *
serd_parse_file_uri(const char *uri, char **hostname)¶ Get the unescaped path and hostname from a file URI.
The returned path and
*hostnamemust be freed withserd_free().- Parameters
 uri – A file URI.
hostname – If non-NULL, set to the hostname, if present.
- Returns
 A filesystem path.
- 
SerdURIView 
serd_resolve_uri(SerdURIView r, SerdURIView base)¶ Return reference
rresolved againstbase.This will make
ran absolute URI if possible.- Parameters
 r – URI reference to make absolute, for example “child/path”.
base – Base URI, for example “http://example.org/base/”.
- Returns
 An absolute URI, for example “http://example.org/base/child/path”, or
rif it is not a URI reference that can be resolved againstbase.
- 
SerdURIView 
serd_relative_uri(SerdURIView r, SerdURIView base)¶ Return
ras a reference relative tobaseif possible.- Parameters
 r – URI to make relative, for example “http://example.org/base/child/path”.
base – Base URI, for example “http://example.org/base”.
- Returns
 A relative URI reference, for example “child/path”,
rif it can not be made relative tobase, or a null URI ifrcould be made relative to base, but the path prefix is already being used (most likely becauserwas previously a relative URI reference that was resolved against some base).
- 
bool 
serd_uri_is_within(SerdURIView r, SerdURIView base)¶ Return whether
rcan be written as a reference relative tobase.For example, with
base“http://example.org/base/”, this returns true ifris also “http://example.org/base/”, or something like “http://example.org/base/child” (“child”) “http://example.org/base/child/grandchild#fragment” (“child/grandchild#fragment”), “http://example.org/base/child/grandchild?query” (“child/grandchild?query”), and so on.- Returns
 True if
randbaseare equal or ifris a child ofbase.
- 
size_t 
serd_uri_string_length(SerdURIView uri)¶ Return the length of
urias a string.This can be used to get the expected number of bytes that will be written by
serd_write_uri().- Returns
 A string length in bytes, not including the null terminator.
- 
size_t 
serd_write_uri(SerdURIView uri, SerdWriteFunc sink, void *stream)¶ Write
urias a string tosink.This will call
sinkseveral times to emit the serialised URI.- Parameters
 uri – URI to write as a string.
sink – Sink to write string output to.
stream – Opaque user argument to pass to
sink.
- Returns
 The number of bytes written, which is less than
serd_uri_string_length(uri)on error.