diff options
author | worktycho <work.tycho@gmail.com> | 2015-12-26 20:01:37 +0100 |
---|---|---|
committer | worktycho <work.tycho@gmail.com> | 2015-12-26 20:01:37 +0100 |
commit | b99b60720a3bb5c19032c330028b91f5faf7f4c2 (patch) | |
tree | ccbcdc4e3771a5ca4415438e8b631a6dfbdd0944 /src/HTTPServer/UrlParser.h | |
parent | Merge pull request #2789 from cuberite/apidump-analytics (diff) | |
parent | Added the cUrlParser class, exported to Lua API. (diff) | |
download | cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.tar cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.tar.gz cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.tar.bz2 cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.tar.lz cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.tar.xz cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.tar.zst cuberite-b99b60720a3bb5c19032c330028b91f5faf7f4c2.zip |
Diffstat (limited to 'src/HTTPServer/UrlParser.h')
-rw-r--r-- | src/HTTPServer/UrlParser.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/HTTPServer/UrlParser.h b/src/HTTPServer/UrlParser.h new file mode 100644 index 000000000..15a63e05d --- /dev/null +++ b/src/HTTPServer/UrlParser.h @@ -0,0 +1,58 @@ + +// UrlParser.h + +// Declares the cUrlParser class that parses string URL into individual parts + + + + + +#pragma once + + + + + +class cUrlParser +{ +public: + /** Returns true if the specified scheme (http, ftp, mailto, ...) is recognized by the URL parser. + Is case sensitive, known schemes are always lowercase. */ + static bool IsKnownScheme(const AString & a_Scheme) { return (GetDefaultPort(a_Scheme) > 0); } + + /** Returns the default port used by the specified scheme / protocol. + If the scheme is not known, 0 is returned. */ + static UInt16 GetDefaultPort(const AString & a_Scheme); + + /** Parses the given Authority part of an URL into individual components. + Returns true on success, + returns false and error message on failure. */ + static std::pair<bool, AString> ParseAuthorityPart( + const AString & a_AuthorityPart, + AString & a_Username, + AString & a_Password, + AString & a_Host, + UInt16 & a_Port + ); + + /** Parses the given URL into individual components. + Returns true on success, + returns false and error message on failure. + Fails if the scheme (protocol) is not known. + If port is missing, the default port for the specific scheme is applied. */ + static std::pair<bool, AString> Parse( + const AString & a_Url, + AString & a_Scheme, + AString & a_Username, + AString & a_Password, + AString & a_Host, + UInt16 & a_Port, + AString & a_Path, + AString & a_Query, + AString & a_Fragment + ); +}; + + + + |