diff options
author | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-05-24 06:46:59 +0300 |
---|---|---|
committer | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-05-24 06:46:59 +0300 |
commit | 9442846e0e193cea98c3959da7326c9fd3d780e1 (patch) | |
tree | 0bf85bd606a61dfddab0933253d5f9785e08b2fb /library/cpp | |
parent | 9e6590dab63a1a07e738a246030af9b888333214 (diff) | |
download | ydb-9442846e0e193cea98c3959da7326c9fd3d780e1.tar.gz |
intermediate changes
ref:cec8c3b1f4aa91c62b0f4b90b6a8c78c23b1c4f1
Diffstat (limited to 'library/cpp')
-rw-r--r-- | library/cpp/cgiparam/cgiparam.cpp | 17 | ||||
-rw-r--r-- | library/cpp/cgiparam/cgiparam.h | 1 |
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); |