aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-05-24 06:46:59 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-05-24 06:46:59 +0300
commit9442846e0e193cea98c3959da7326c9fd3d780e1 (patch)
tree0bf85bd606a61dfddab0933253d5f9785e08b2fb /library/cpp
parent9e6590dab63a1a07e738a246030af9b888333214 (diff)
downloadydb-9442846e0e193cea98c3959da7326c9fd3d780e1.tar.gz
intermediate changes
ref:cec8c3b1f4aa91c62b0f4b90b6a8c78c23b1c4f1
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/cgiparam/cgiparam.cpp17
-rw-r--r--library/cpp/cgiparam/cgiparam.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/library/cpp/cgiparam/cgiparam.cpp b/library/cpp/cgiparam/cgiparam.cpp
index f3277b8e4b2..f42226e1853 100644
--- a/library/cpp/cgiparam/cgiparam.cpp
+++ b/library/cpp/cgiparam/cgiparam.cpp
@@ -46,6 +46,23 @@ bool TCgiParameters::Erase(const TStringBuf name, const TStringBuf val) {
return found;
}
+bool TCgiParameters::ErasePattern(const TStringBuf name, const TStringBuf pat) {
+ const auto pair = equal_range(name);
+
+ bool found = false;
+ for (auto it = pair.first; it != pair.second;) {
+ bool startsWith = it->second.StartsWith(pat);
+ if (startsWith) {
+ it = erase(it);
+ found = true;
+ } else {
+ ++it;
+ }
+ }
+
+ return found;
+}
+
size_t TCgiParameters::EraseAll(const TStringBuf name) {
size_t num = 0;
diff --git a/library/cpp/cgiparam/cgiparam.h b/library/cpp/cgiparam/cgiparam.h
index 87d1ab0ad45..ec0bd174647 100644
--- a/library/cpp/cgiparam/cgiparam.h
+++ b/library/cpp/cgiparam/cgiparam.h
@@ -121,6 +121,7 @@ public:
bool Erase(const TStringBuf name, size_t numOfValue = 0);
bool Erase(const TStringBuf name, const TStringBuf val);
+ bool ErasePattern(const TStringBuf name, const TStringBuf pat);
inline const char* FormField(const TStringBuf name, size_t numOfValue = 0) const {
const_iterator it = Find(name, numOfValue);