std::string URL::query() const { if (hasQuery()) return _buf.substr(_parser.field_data[UF_QUERY].off, _parser.field_data[UF_QUERY].len); return std::string(); }
void URL::updateQuery(const std::string& query) { if (!hasQuery()) throw std::runtime_error("Cannot update invalid URL"); std::string tmp(str()); util::replaceInPlace(tmp, this->query(), query); parse(tmp); }
std::string URL::pathEtc() const { std::string res; res.append(path()); if (hasQuery()) { res.append("?"); res.append(query()); } if (hasFragment()) { res.append("#"); res.append(fragment()); } return res; }
int MUrl::parse() { http_parser_url hpu; if (http_parser_parse_url(m_url.c_str(), m_url.length(), 0, &hpu) != 0) { return -1; } m_scheme = getUrlField(m_url, UF_SCHEMA, hpu); m_host = getUrlField(m_url, UF_HOST, hpu); m_port = getUrlField(m_url, UF_PORT, hpu).toShort(); m_path = getUrlField(m_url, UF_PATH, hpu); m_query = getUrlField(m_url, UF_QUERY, hpu); m_fragment = getUrlField(m_url, UF_FRAGMENT, hpu); if (hasQuery()) { parseQuery(); } return 0; }
void PersistanceVisitor::setQuery(Query* q) { if (hasQuery()) { delete _query; } _query = q; }
std::string UrlObject::fragment() const { if (hasQuery()) return _buf.substr(_handle.field_data[UF_FRAGMENT].off, _handle.field_data[UF_FRAGMENT].len); return std::string(); }
std::string UrlObject::query() const { if (hasQuery()) return _buf.substr(_handle.field_data[UF_QUERY].off, _handle.field_data[UF_QUERY].len); return std::string(); }