20 #include <ripple/basics/contract.h>
21 #include <ripple/basics/Slice.h>
22 #include <ripple/basics/StringUtilities.h>
23 #include <ripple/basics/ToString.h>
24 #include <ripple/beast/core/LexicalCast.h>
25 #include <boost/algorithm/string.hpp>
26 #include <ripple/beast/net/IPEndpoint.h>
27 #include <boost/regex.hpp>
37 if (strSrc.
size () > 16)
38 Throw<std::invalid_argument> (
"overlong 64-bit value");
45 Throw<std::invalid_argument> (
"invalid hex digit");
47 uValue = (uValue << 4) | ret;
56 static boost::regex reUrl (
59 "([[:alpha:]][-+.[:alpha:][:digit:]]*?):"
64 "(?:([^:@/]*?)(?::([^@/]*?))?@)?"
66 "([[:digit:]:]*[[:digit:]]|\\[[^]]+\\]|[^:/?#]*?)"
68 "(?::([[:digit:]]+))?"
72 boost::smatch smMatch;
76 if (! boost::regex_match (strUrl, smMatch, reUrl))
83 boost::algorithm::to_lower (pUrl.
scheme);
92 ? result->address().to_string()
97 pUrl.
port = beast::lexicalCast <std::uint16_t> (port);
99 pUrl.
path = smMatch[6];
110 boost::optional<std::uint64_t>