4#include "../Common/Result.h"
5#include "../Common/StringSpan.h"
18 bool hasValue =
false;
41 static bool getValue(StringSpan body, StringSpan name, StringSpan& value);
49SC_HTTP_EXPORT Result
HttpPercentDecode(StringSpan input, Span<char> storage, StringSpan& output);
52SC_HTTP_EXPORT Result
HttpFormUrlDecode(StringSpan input, Span<char> storage, StringSpan& output);
63 Result
parse(StringSpan requestTarget);
92 static bool getQueryValue(StringSpan search, StringSpan name, StringSpan& value);
95 StringEncoding encoding;
99 Result validateProtocol();
100 Result validatePath();
101 Result validateHost();
102 Result parseUserPassword(StringSpan userPassword);
SC_HTTP_EXPORT Result HttpPercentDecode(StringSpan input, Span< char > storage, StringSpan &output)
Percent-decodes a URI component into caller-provided storage.
SC_HTTP_EXPORT Result HttpFormUrlDecode(StringSpan input, Span< char > storage, StringSpan &output)
Decodes an application/x-www-form-urlencoded component into caller-provided storage.
Zero-copy view over an HTTP origin-form request target.
Definition HttpURLParser.h:56
StringSpan search
Query component including leading ?, if present.
Definition HttpURLParser.h:59
StringSpan path
Path component, excluding query / fragment.
Definition HttpURLParser.h:58
StringSpan raw
Original request target.
Definition HttpURLParser.h:57
StringSpan hash
Fragment component including leading #, if present.
Definition HttpURLParser.h:60
bool getQueryValue(StringSpan name, StringSpan &value) const
Finds first raw query value matching name in this request target.
Result parse(StringSpan requestTarget)
Parse an origin-form request target such as /path?query.
Parse an URL splitting it into its base components.
Definition HttpURLParser.h:71
StringSpan password
Returns pass (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:74
StringSpan path
Returns /pa/th?q=val (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:79
uint16_t port
Returns 80 (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:76
StringSpan pathname
Returns /pa/th (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:78
StringSpan host
Returns site.com:80 (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:77
StringSpan protocol
Returns http (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:72
StringSpan username
Returns user (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:73
static bool getQueryValue(StringSpan search, StringSpan name, StringSpan &value)
Finds first raw query value matching name in a search component, with or without leading '?...
StringSpan hash
Returns #hash (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:81
Result parse(StringSpan url)
Parse StringSpan representing an URL.
bool getQueryValue(StringSpan name, StringSpan &value) const
Finds first raw query value matching name in this URL search component.
StringSpan hostname
Returns site.com (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:75
StringSpan search
Returns ?q=val (from http://user:pass@site.com:80/pa/th?q=val#hash)
Definition HttpURLParser.h:80
One raw query string item parsed from a URL search component.
Definition HttpURLParser.h:15
Iterates raw query string items without allocation or percent-decoding.
Definition HttpURLParser.h:23