20 #include <ripple/basics/Slice.h>
21 #include <ripple/basics/StringUtilities.h>
22 #include <ripple/basics/ToString.h>
23 #include <ripple/basics/contract.h>
24 #include <ripple/beast/core/LexicalCast.h>
25 #include <ripple/beast/net/IPEndpoint.h>
26 #include <boost/algorithm/string.hpp>
27 #include <boost/regex.hpp>
38 if (strSrc.
size() > 16)
39 Throw<std::invalid_argument>(
"overlong 64-bit value");
46 Throw<std::invalid_argument>(
"invalid hex digit");
48 uValue = (uValue << 4) | ret;
58 static boost::regex reUrl(
61 "([[:alpha:]][-+.[:alpha:][:digit:]]*?):"
66 "(?:([^:@/]*?)(?::([^@/]*?))?@)?"
68 "([[:digit:]:]*[[:digit:]]|\\[[^]]+\\]|[^:/?#]*?)"
70 "(?::([[:digit:]]+))?"
74 boost::smatch smMatch;
79 if (!boost::regex_match(strUrl, smMatch, reUrl))
88 boost::algorithm::to_lower(pUrl.
scheme);
96 pUrl.
domain = result ? result->address().to_string() : domain;
100 pUrl.
port = beast::lexicalCast<std::uint16_t>(port);
102 pUrl.
path = smMatch[6];
114 boost::optional<std::uint64_t>