diff --git a/src/opds_catalog.cpp b/src/opds_catalog.cpp index ee7dacb3e..32dfad618 100644 --- a/src/opds_catalog.cpp +++ b/src/opds_catalog.cpp @@ -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(); } diff --git a/test/opds_catalog.cpp b/test/opds_catalog.cpp index dae777e06..a1936a19b 100644 --- a/test/opds_catalog.cpp +++ b/test/opds_catalog.cpp @@ -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 }