8 #ifndef WPIUTIL_WPI_URLPARSER_H_
9 #define WPIUTIL_WPI_URLPARSER_H_
11 #include "wpi/StringRef.h"
12 #include "wpi/http_parser.h"
29 http_parser_url_init(&m_url);
30 m_error = http_parser_parse_url(in.
data(), in.
size(), isConnect, &m_url);
38 bool HasSchema()
const {
return (m_url.field_set & UF_SCHEMA) != 0; }
40 bool HasHost()
const {
return (m_url.field_set & UF_HOST) != 0; }
42 bool HasPort()
const {
return (m_url.field_set & UF_PORT) != 0; }
44 bool HasPath()
const {
return (m_url.field_set & UF_PATH) != 0; }
46 bool HasQuery()
const {
return (m_url.field_set & UF_QUERY) != 0; }
48 bool HasFragment()
const {
return (m_url.field_set & UF_FRAGMENT) != 0; }
50 bool HasUserInfo()
const {
return (m_url.field_set & UF_USERINFO) != 0; }
52 StringRef GetSchema()
const {
53 return m_data.
substr(m_url.field_data[UF_SCHEMA].off,
54 m_url.field_data[UF_SCHEMA].len);
57 StringRef GetHost()
const {
58 return m_data.
substr(m_url.field_data[UF_HOST].off,
59 m_url.field_data[UF_HOST].len);
62 unsigned int GetPort()
const {
return m_url.port; }
64 StringRef GetPath()
const {
65 return m_data.
substr(m_url.field_data[UF_PATH].off,
66 m_url.field_data[UF_PATH].len);
69 StringRef GetQuery()
const {
70 return m_data.
substr(m_url.field_data[UF_QUERY].off,
71 m_url.field_data[UF_QUERY].len);
74 StringRef GetFragment()
const {
75 return m_data.
substr(m_url.field_data[UF_FRAGMENT].off,
76 m_url.field_data[UF_FRAGMENT].len);
79 StringRef GetUserInfo()
const {
80 return m_data.
substr(m_url.field_data[UF_USERINFO].off,
81 m_url.field_data[UF_USERINFO].len);
87 http_parser_url m_url;
92 #endif // WPIUTIL_WPI_URLPARSER_H_
bool IsValid() const
Determine if the URL is valid (e.g.
Definition: UrlParser.h:36
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE StringRef substr(size_t Start, size_t N=npos) const noexcept
Return a reference to the substring from [Start, Start + N).
Definition: StringRef.h:556
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE const char * data() const noexcept
data - Get a pointer to the start of the string (which may not be null terminated).
Definition: StringRef.h:128
namespace to hold default to_json function
Definition: SmallString.h:21
UrlParser(StringRef in, bool isConnect)
Parse a URL.
Definition: UrlParser.h:27
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE size_t size() const noexcept
size - Get the string size.
Definition: StringRef.h:138
Parses a URL into its constiuent components.
Definition: UrlParser.h:20