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 & (1 << UF_SCHEMA)) != 0; }
40 bool HasHost()
const {
return (m_url.field_set & (1 << UF_HOST)) != 0; }
42 bool HasPort()
const {
return (m_url.field_set & (1 << UF_PORT)) != 0; }
44 bool HasPath()
const {
return (m_url.field_set & (1 << UF_PATH)) != 0; }
46 bool HasQuery()
const {
return (m_url.field_set & (1 << UF_QUERY)) != 0; }
48 bool HasFragment()
const {
49 return (m_url.field_set & (1 << UF_FRAGMENT)) != 0;
52 bool HasUserInfo()
const {
53 return (m_url.field_set & (1 << UF_USERINFO)) != 0;
56 StringRef GetSchema()
const {
57 return m_data.
substr(m_url.field_data[UF_SCHEMA].off,
58 m_url.field_data[UF_SCHEMA].len);
61 StringRef GetHost()
const {
62 return m_data.
substr(m_url.field_data[UF_HOST].off,
63 m_url.field_data[UF_HOST].len);
66 unsigned int GetPort()
const {
return m_url.port; }
68 StringRef GetPath()
const {
69 return m_data.
substr(m_url.field_data[UF_PATH].off,
70 m_url.field_data[UF_PATH].len);
73 StringRef GetQuery()
const {
74 return m_data.
substr(m_url.field_data[UF_QUERY].off,
75 m_url.field_data[UF_QUERY].len);
78 StringRef GetFragment()
const {
79 return m_data.
substr(m_url.field_data[UF_FRAGMENT].off,
80 m_url.field_data[UF_FRAGMENT].len);
83 StringRef GetUserInfo()
const {
84 return m_data.
substr(m_url.field_data[UF_USERINFO].off,
85 m_url.field_data[UF_USERINFO].len);
91 http_parser_url m_url;
96 #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
WPILib C++ utilities (wpiutil) namespace.
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