diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /netwerk/base/nsIURLParser.idl | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'netwerk/base/nsIURLParser.idl')
-rw-r--r-- | netwerk/base/nsIURLParser.idl | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/netwerk/base/nsIURLParser.idl b/netwerk/base/nsIURLParser.idl new file mode 100644 index 0000000000..3d6ac19b8c --- /dev/null +++ b/netwerk/base/nsIURLParser.idl @@ -0,0 +1,98 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +/** + * nsIURLParser specifies the interface to an URL parser that attempts to + * follow the definitions of RFC 2396. + */ +[scriptable, uuid(78c5d19f-f5d2-4732-8d3d-d5a7d7133bc0)] +interface nsIURLParser : nsISupports +{ + /** + * The string to parse in the following methods may be given as a null + * terminated string, in which case the length argument should be -1. + * + * Out parameters of the following methods are all optional (ie. the caller + * may pass-in a NULL value if the corresponding results are not needed). + * Signed out parameters may hold a value of -1 if the corresponding result + * is not part of the string being parsed. + * + * The parsing routines attempt to be as forgiving as possible. + */ + + /** + * ParseSpec breaks the URL string up into its 3 major components: a scheme, + * an authority section (hostname, etc.), and a path. + * + * spec = <scheme>://<authority><path> + */ + void parseURL (in string spec, in long specLen, + out unsigned long schemePos, out long schemeLen, + out unsigned long authorityPos, out long authorityLen, + out unsigned long pathPos, out long pathLen); + + /** + * ParseAuthority breaks the authority string up into its 4 components: + * username, password, hostname, and hostport. + * + * auth = <username>:<password>@<hostname>:<port> + */ + void parseAuthority (in string authority, in long authorityLen, + out unsigned long usernamePos, out long usernameLen, + out unsigned long passwordPos, out long passwordLen, + out unsigned long hostnamePos, out long hostnameLen, + out long port); + + /** + * userinfo = <username>:<password> + */ + void parseUserInfo (in string userinfo, in long userinfoLen, + out unsigned long usernamePos, out long usernameLen, + out unsigned long passwordPos, out long passwordLen); + + /** + * serverinfo = <hostname>:<port> + */ + void parseServerInfo (in string serverinfo, in long serverinfoLen, + out unsigned long hostnamePos, out long hostnameLen, + out long port); + + /** + * ParsePath breaks the path string up into its 3 major components: a file path, + * a query string, and a reference string. + * + * path = <filepath>?<query>#<ref> + */ + void parsePath (in string path, in long pathLen, + out unsigned long filepathPos, out long filepathLen, + out unsigned long queryPos, out long queryLen, + out unsigned long refPos, out long refLen); + + /** + * ParseFilePath breaks the file path string up into: the directory portion, + * file base name, and file extension. + * + * filepath = <directory><basename>.<extension> + */ + void parseFilePath (in string filepath, in long filepathLen, + out unsigned long directoryPos, out long directoryLen, + out unsigned long basenamePos, out long basenameLen, + out unsigned long extensionPos, out long extensionLen); + + /** + * filename = <basename>.<extension> + */ + void parseFileName (in string filename, in long filenameLen, + out unsigned long basenamePos, out long basenameLen, + out unsigned long extensionPos, out long extensionLen); +}; + +%{C++ +// url parser key for use with the category manager +// mapping from scheme to url parser. +#define NS_IURLPARSER_KEY "@mozilla.org/urlparser;1" +%} |