blob: 4da2ab979c059b318a94a2ce1a530b0ed93e7073 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# nng_url
## NAME
nng_url --- Universal Resource Locator object
## SYNOPSIS
```c
#include <nng/nng.h>
typedef struct nng_url {
char *u_rawurl;
char *u_scheme;
char *u_userinfo;
char *u_host;
char *u_hostname;
char *u_port;
char *u_path;
char *u_query;
char *u_fragment;
char *u_requri;
} nng_url;
int nng_url_parse(nng_url **urlp, const char *str);
int nng_url_clone(nng_url **dup, nng_url *url);
void nng_url_free(nng_url *url);
```
## DESCRIPTION
An {{i:`nng_url`}}{{hi:URL}}{{hi:Universal Resource Locator}} is a structure used for representing URLs.
These structures are created by parsing string formatted URLs with {{i:`nng_url_parse`}}.
An `nng_url` may be cloned using the {{i:`nng_url_clone`}} function.
The original _url_ is duplicated into the location specified by _dup_.
When no longer needed, `nng_url` objects may be freed using {{i:`nng_url_free`}}.
> [!IMPORTANT]
> Only `nng_url_free` should be used to deallocate `nng_url` objects.
### URL Fields
Applications may access individual fields, but must not free or
alter them, as the underlying memory is managed by the library.
The fields of an `nng_url` object are as follows:
- `u_rawurl`: The unparsed URL string. This will never be `NULL`.
- `u_scheme`: The URL scheme, such as "http" or "inproc". Always lower case. This will never be `NULL`.
- `u_userinfo`: This username and password if supplied in the URL string. Will be `NULL` when not present.
- `u_host`: The full host part of the URL, including the port if present (separated by a colon.)
- `u_hostname`: The name of the host, and may be the empty string in some cases.
- `u_port`: The port. May be empty if irrelevant or not specified.
- `u_path`: The path, typically used with HTTP or WebSockets. Will be empty string if not specified.
- `u_query`: The query info (typically following `?` in the URL.) Will be `NULL` if not present.
- `u_fragment`: This is used for specifying an anchor, the part after `#` in a URL. Will be `NULL` if not present.
- `u_requri`: The full Request-URI. Will be the empty string if not specified.
> [!NOTE]
> Other fields may also be present, but only those documented here are safe for application use.
> [!TIP]
> More information about Universal Resource Locators can be found in
> [RFC 3986](https://tools.ietf.org/html/rfc3986).
## RETURN VALUES
The `nng_url_parse` and `nng_url_clone` functions return zero on success, or a non-zero
error value.
## ERRORS
- `NNG_ENOMEM`: Insufficient free memory exists.
- `NNG_EINVAL`: The supplied string does not represent a valid URL.
|