aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/libnng.adoc11
-rw-r--r--docs/nng_url_clone.adoc53
-rw-r--r--docs/nng_url_free.adoc51
-rw-r--r--docs/nng_url_parse.adoc111
4 files changed, 226 insertions, 0 deletions
diff --git a/docs/libnng.adoc b/docs/libnng.adoc
index 179b9a0e..57337f47 100644
--- a/docs/libnng.adoc
+++ b/docs/libnng.adoc
@@ -160,6 +160,17 @@ The following functions are used to register a transport for use.
| <<nng_zerotier#,nng_zerotier_register(3)>>|register ZeroTier transport
|===
+=== URL Object
+
+Common functionality is supplied for parsing and handling
+universal resource locators (URLS).
+
+|===
+| <<nng_url_clone#,nng_url_clone(3)>>|clone URL structure
+| <<nng_url_free#,nng_url_free(3)>>|free URL structure
+| <<nng_url_parse#,nng_url_parse(3)>>|create URL structure from string
+|===
+
=== TLS Configuration Objects
The following functions are used to manipulate transport layer security
diff --git a/docs/nng_url_clone.adoc b/docs/nng_url_clone.adoc
new file mode 100644
index 00000000..b1714962
--- /dev/null
+++ b/docs/nng_url_clone.adoc
@@ -0,0 +1,53 @@
+= nng_url_clone(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_url_clone - clone URL structure
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_url_clone(nng_url **dup, nng_url *orig);
+-----------
+
+== DESCRIPTION
+
+The `nng_url_clone()` makes a clone of the original URL structure _orig_, and
+saves the result in the location pointed by _dup_. This clone includes
+fully duplicating each of the member fields.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient free memory exists to duplicate a message.
+
+== SEE ALSO
+
+<<nng_url_free#,nng_url_free(3)>>,
+<<nng_url_parse#,nng_url_parse(3)>>,
+<<nng_strerror#,nng_strerror(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_url_free.adoc b/docs/nng_url_free.adoc
new file mode 100644
index 00000000..1aa522f0
--- /dev/null
+++ b/docs/nng_url_free.adoc
@@ -0,0 +1,51 @@
+= nng_url_free(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_url_free - free a URL structure
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+void nng_url_free(nng_url *url);
+-----------
+
+== DESCRIPTION
+
+The `nng_url_free()` function deallocates the _url_ entirely, including
+any of it's members.
+
+== RETURN VALUES
+
+None.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_url_clone#,nng_url_clone(3)>>,
+<<nng_url_parse#,nng_url_parse(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_url_parse.adoc b/docs/nng_url_parse.adoc
new file mode 100644
index 00000000..0ea0cd1d
--- /dev/null
+++ b/docs/nng_url_parse.adoc
@@ -0,0 +1,111 @@
+= nng_url_parse(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_url_parse - create URL structure from a string
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_url_parse(nng_url **urlp, const char *str);
+-----------
+
+
+== DESCRIPTION
+
+The `nng_url_parse()` function parses the string _str_ containing an
+https://tools.ietf.org/html/rfc3986[RFC 3986] compliant URL, and creates
+a structure containing the results. A pointer to the resulting structure
+is stored in _urlp_.
+
+The `nng_url` structure has at least the following members:
+
+`char *u_scheme`:: The scheme, such as `http`. Always lower case.
+
+`char *u_rawurl`:: An unparsed form of the raw URL, with only minimal
+ canonicalization performed.
+
+`char *u_userinfo`:: The userinfo component if one was present,
+ `NULL` otherwise.
+
+`char *u_host`:: The full host, including hostname, and colon and port
+ if present, otehrwise the empty string.
+
+`char *u_hostname`:: The hostname if present, otherwise the empty string.
+ Always lower case.
+
+`char *u_port`:: The port if present. If not present, a default port
+ will be stored here. If no default is available, then
+ the empty string.
+
+`char *u_path`:: The path component if present, or the empty string
+ otherwise.
+
+`char *u_query`:: The query component if present, NULL otherwise.
+
+`char *u_fragment`:: The fragment if present, NULL otherwise.
+
+=== URL Canonicalization
+
+The `nng_url_parse()` function also canonicalizes the results, as
+follows:
+
+ 1. The URL is parsed into the various components.
+ 2. The `u_scheme`, `u_hostname`, `u_host`, and `u_port` members are
+ converted to lower case.
+ 3. Percent-encoded values for
+ https://tools.ietf.org/html/rfc3986#section-2.3[unreserved characters]
+ converted to their unencoded forms.
+ 4. Additionally URL percent-encoded values for characters in the path
+ and with numeric values larger than 127 (i.e. not ASCII) are decoded.
+ 5. The resulting `u_path` is checked for invalid UTF-8 sequences, consisting
+ of surrogate pairs, illegal byte sequences, or overlong encodings.
+ If this check fails, then the entire URL is considered invalid, and
+ the function returns `NNG_EINVAL`.
+ 6. Path segments consisting of `.` and `..` are resolved as per
+ https://tools.ietf.org/html/rfc3986#section-6.2.2.3[RFC 3986 6.2.2.3].
+ 7. Further, empty path segments are removed, meaning that duplicate
+ slash (`/`) separators are removed from the path.
+ 8. If a port was not specified, but the scheme defines a default
+ port, then `u_port` will be filled in with the value of the default port.
+
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient free memory exists to allocate a message.
+`NNG_EINVAL`:: An invalid URL was supplied.
+
+
+== SEE ALSO
+
+<<nng_url_clone#,nng_url_clone(3)>>,
+<<nng_url_free#,nng_url_free(3)>>,
+<<nng_strerror#,nng_strerror(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].