示例#1
0
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();
}
示例#2
0
文件: url.cpp 项目: delort/libsourcey
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);
}
示例#3
0
文件: url.cpp 项目: delort/libsourcey
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;
}
示例#4
0
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;
}
示例#6
0
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();
}
示例#7
0
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();
}