Skip to content

Commit d08c2c9

Browse files
committed
feat: add percent_encoding to to_string
1 parent e2b2bd2 commit d08c2c9

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

include/ada/url_search_params-inl.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#define ADA_URL_SEARCH_PARAMS_INL_H
77

88
#include "ada.h"
9+
#include "ada/character_sets-inl.h"
10+
#include "ada/unicode.h"
911
#include "ada/url_search_params.h"
1012

1113
#include <algorithm>
@@ -55,19 +57,17 @@ inline bool url_search_params::has(const std::string_view key) noexcept {
5557
}
5658

5759
inline std::string url_search_params::to_string() {
58-
// TODO: Add encoding support
59-
// Add tests from
60-
// https://github.com/web-platform-tests/wpt/blob/master/url/urlsearchparams-stringifier.any.js
60+
auto character_set = ada::character_sets::WWW_FORM_URLENCODED_PERCENT_ENCODE;
6161
std::string out{};
6262
for (size_t i = 0; i < params.size(); i++) {
6363
auto [key, value] = params[i];
6464

6565
if (i != 0) {
6666
out += "&";
6767
}
68-
out.append(key);
68+
out.append(ada::unicode::percent_encode(key, character_set));
6969
out += "=";
70-
out.append(value);
70+
out.append(ada::unicode::percent_encode(value, character_set));
7171
}
7272
return out;
7373
}

tests/url_search_params.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ TEST(url_search_params, to_string_serialize_ampersand) {
5757
auto params = ada::url_search_params();
5858
params.append("&", "a");
5959
ASSERT_EQ(params.to_string(), "%26=a");
60-
params.remove("&");
60+
params.append("b", "&");
6161
ASSERT_EQ(params.to_string(), "%26=a&b=%26");
6262
SUCCEED();
6363
}

0 commit comments

Comments
 (0)