Proper URI-encoding in kiwix::getSearchUrl()

This commit is contained in:
Veloman Yunkan 2023-01-25 17:16:43 +04:00
parent 82dcba542a
commit ec81d5904d
2 changed files with 12 additions and 12 deletions

View File

@ -42,19 +42,19 @@ std::string buildSearchString(const Filter& f)
{
std::ostringstream oss;
if ( f.hasQuery() )
oss << AMP << "q=" << urlEncode(f.getQuery());
oss << AMP << "q=" << urlEncode(f.getQuery(), true);
if ( f.hasCategory() )
oss << AMP << "category=" << urlEncode(f.getCategory());
oss << AMP << "category=" << urlEncode(f.getCategory(), true);
if ( f.hasLang() )
oss << AMP << "lang=" << urlEncode(f.getLang());
oss << AMP << "lang=" << urlEncode(f.getLang(), true);
if ( f.hasName() )
oss << AMP << "name=" << urlEncode(f.getName());
oss << AMP << "name=" << urlEncode(f.getName(), true);
if ( !f.getAcceptTags().empty() )
oss << AMP << "tag=" << urlEncode(join(f.getAcceptTags(), ";"));
oss << AMP << "tag=" << urlEncode(join(f.getAcceptTags(), ";"), true);
return oss.str();
}

View File

@ -38,33 +38,33 @@ TEST(OpdsCatalog, getSearchUrl)
{
Filter f;
f.query("abc def#xyz");
EXPECT_SEARCH_URL("/catalog/v2/entries?q=abc%20def#xyz");
EXPECT_SEARCH_URL("/catalog/v2/entries?q=abc%20def%23xyz");
}
{
Filter f;
f.category("ted&bob");
EXPECT_SEARCH_URL("/catalog/v2/entries?category=ted&bob");
EXPECT_SEARCH_URL("/catalog/v2/entries?category=ted%26bob");
}
{
Filter f;
f.lang("eng,fra");
EXPECT_SEARCH_URL("/catalog/v2/entries?lang=eng,fra");
EXPECT_SEARCH_URL("/catalog/v2/entries?lang=eng%2Cfra");
}
{
Filter f;
f.name("second?");
EXPECT_SEARCH_URL("/catalog/v2/entries?name=second?");
EXPECT_SEARCH_URL("/catalog/v2/entries?name=second%3F");
}
{
Filter f;
f.acceptTags({"#paper", "#plastic"});
EXPECT_SEARCH_URL("/catalog/v2/entries?tag=#paper;#plastic");
EXPECT_SEARCH_URL("/catalog/v2/entries?tag=%23paper%3B%23plastic");
}
{
Filter f;
f.query("abc=123");
f.category("@ted");
EXPECT_SEARCH_URL("/catalog/v2/entries?q=abc=123&category=@ted");
EXPECT_SEARCH_URL("/catalog/v2/entries?q=abc%3D123&category=%40ted");
}
{
Filter f;
@ -79,7 +79,7 @@ TEST(OpdsCatalog, getSearchUrl)
f.lang("html");
f.name("edsonarantesdonascimento");
f.acceptTags({"body", "script"});
EXPECT_SEARCH_URL("/catalog/v2/entries?q=peru&category=scifi&lang=html&name=edsonarantesdonascimento&tag=body;script");
EXPECT_SEARCH_URL("/catalog/v2/entries?q=peru&category=scifi&lang=html&name=edsonarantesdonascimento&tag=body%3Bscript");
}
#undef EXPECT_SEARCH_URL
}