summaryrefslogtreecommitdiff
path: root/utils/nsurl.h
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2011-09-21 14:36:42 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2011-09-21 14:36:42 +0000
commit9f3a082658a979269838d4682f9abfb21a90f679 (patch)
tree06fa17851b2cd22f0fdb8fb894a8f1ebfc3cc171 /utils/nsurl.h
parentf27d5a3e15b5931f36b96bc5fb3d2572d339715d (diff)
downloadnetsurf-9f3a082658a979269838d4682f9abfb21a90f679.tar.gz
netsurf-9f3a082658a979269838d4682f9abfb21a90f679.tar.bz2
New URL handling (unused atm).
svn path=/trunk/netsurf/; revision=12843
Diffstat (limited to 'utils/nsurl.h')
-rw-r--r--utils/nsurl.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/utils/nsurl.h b/utils/nsurl.h
new file mode 100644
index 000000000..7b77c7f1e
--- /dev/null
+++ b/utils/nsurl.h
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2011 Michael Drake <tlsa@netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * NetSurf URL handling (interface).
+ */
+
+#ifndef _NETSURF_UTILS_NSURL_H_
+#define _NETSURF_UTILS_NSURL_H_
+
+#include "utils/errors.h"
+
+
+/** NetSurf URL object */
+typedef struct nsurl nsurl;
+
+
+typedef enum nsurl_component {
+ NSURL_SCHEME = (1 << 0),
+ NSURL_USERNAME = (1 << 1),
+ NSURL_PASSWORD = (1 << 2),
+ NSURL_CREDENTIALS = NSURL_USERNAME | NSURL_PASSWORD,
+ NSURL_HOST = (1 << 3),
+ NSURL_PORT = (1 << 4),
+ NSURL_AUTHORITY = NSURL_CREDENTIALS | NSURL_HOST | NSURL_PORT,
+ NSURL_PATH = (1 << 5),
+ NSURL_QUERY = (1 << 6),
+ NSURL_COMPLETE = NSURL_SCHEME | NSURL_AUTHORITY |
+ NSURL_PATH | NSURL_QUERY,
+ NSURL_FRAGMENT = (1 << 7),
+ NSURL_WITH_FRAGMENT = NSURL_COMPLETE | NSURL_FRAGMENT
+} nsurl_component;
+
+
+/**
+ * Create a NetSurf URL object from a URL string
+ *
+ * \param url_s String to create NetSurf URL from
+ * \param url Returns a NetSurf URL
+ * \return NSERROR_OK on success, appropriate error otherwise
+ *
+ * If return value != NSERROR_OK, nothing will be returned in url.
+ *
+ * It is up to the client to call nsurl_destroy when they are finished with
+ * the created object.
+ */
+nserror nsurl_create(const char const *url_s, nsurl **url);
+
+
+/**
+ * Destroy a NetSurf URL object
+ *
+ * \param url NetSurf URL to destroy
+ * \return NSERROR_OK on success, appropriate error otherwise
+ */
+nserror nsurl_destroy(nsurl *url);
+
+
+/**
+ * Compare two URLs
+ *
+ * \param url1 First NetSurf URL
+ * \param url2 Second NetSurf URL
+ * \param parts The URL components to be compared
+ * \param match Returns true if url1 and url2 matched, else false
+ * \return NSERROR_OK on success, appropriate error otherwise
+ *
+ * If return value != NSERROR_OK, match will be false.
+ */
+nserror nsurl_compare(const nsurl *url1, const nsurl *url2,
+ nsurl_component parts, bool *match);
+
+
+/**
+ * Get URL (section) as a string, from a NetSurf URL object
+ *
+ * \param url NetSurf URL
+ * \param parts The required URL components.
+ * \param url_s Returns a url string
+ * \param url_l Returns length of url_s
+ * \return NSERROR_OK on success, appropriate error otherwise
+ *
+ * If return value != NSERROR_OK, nothing will be returned in url_s or url_l.
+ *
+ * The string returned in url_s is owned by the client and it is up to them
+ * to free it. It includes a trailing '\0'.
+ *
+ * The length returned in url_l excludes the trailing '\0'.
+ *
+ * That the required URL components be consecutive is not enforced, however,
+ * non-consecutive URL components generally make no sense. The exception
+ * is removal of credentials from a URL, such as for display in browser
+ * window URL bar. 'NSURL_COMPLETE &~ NSURL_PASSWORD' would remove the
+ * password from a complete URL.
+ */
+nserror nsurl_get(const nsurl *url, nsurl_component parts,
+ char **url_s, size_t *url_l);
+
+
+/**
+ * Join a base url to a relative link part, creating a new NetSurf URL object
+ *
+ * \param base NetSurf URL containing the base to join rel to
+ * \param rel String containing the relative link part
+ * \param joined Returns joined NetSurf URL
+ * \return NSERROR_OK on success, appropriate error otherwise
+ *
+ * If return value != NSERROR_OK, nothing will be returned in join.
+ *
+ * It is up to the client to call nsurl_destroy when they are finished with
+ * the created object.
+ */
+nserror nsurl_join(const nsurl *base, const char *rel, nsurl **joined);
+
+#endif