make ParseURL getQuery helper static

Summary:
1. The only callsite of this seemed to migrate to `HTTPMessage::getQueryParam`
2. I was looking to reuse this method, but it requires me to have a `ParsedURL` which is only buildable via URL parsing. This method doesn't really use internal state, so maybe it can just be a static helper.

See next diff for usage.

Reviewed By: lnicco

Differential Revision: D68833844

fbshipit-source-id: 990ff1b621e9b505a387b02c2d1a5669aa09625b
This commit is contained in:
Paul Farcasanu 2025-01-30 07:04:53 -08:00 committed by Facebook GitHub Bot
parent 8d1533b542
commit 88adfe4440
3 changed files with 12 additions and 12 deletions

View File

@ -255,10 +255,9 @@ void ParseURL::stripBrackets() noexcept {
}
folly::Optional<folly::StringPiece> ParseURL::getQueryParam(
folly::StringPiece name) const noexcept {
auto params = query_;
while (!params.empty()) {
auto param = params.split_step('&');
folly::StringPiece query, const folly::StringPiece name) noexcept {
while (!query.empty()) {
auto param = query.split_step('&');
if (!param.removePrefix(name)) {
continue;
}

View File

@ -158,8 +158,8 @@ class ParseURL {
FB_EXPORT void stripBrackets() noexcept;
FOLLY_NODISCARD folly::Optional<folly::StringPiece> getQueryParam(
folly::StringPiece name) const noexcept;
FOLLY_NODISCARD static folly::Optional<folly::StringPiece> getQueryParam(
folly::StringPiece query, const folly::StringPiece name) noexcept;
private:
void moveHostAndAuthority(ParseURL&& goner) {

View File

@ -268,11 +268,12 @@ TEST(ParseURL, PortOverflow) {
TEST(ParseURL, GetQueryParam) {
auto u = ParseURL::parseURL("localhost/?foo=1&bar=2&baz&bazz=3&bak=");
auto q = u->query();
ASSERT_TRUE(u.hasValue());
EXPECT_EQ(u->getQueryParam("foo"), "1");
EXPECT_EQ(u->getQueryParam("bar"), "2");
EXPECT_EQ(u->getQueryParam("baz"), "");
EXPECT_EQ(u->getQueryParam("bazz"), "3");
EXPECT_EQ(u->getQueryParam("bak"), "");
EXPECT_FALSE(u->getQueryParam("fooo").has_value());
EXPECT_EQ(ParseURL::getQueryParam(q, "foo"), "1");
EXPECT_EQ(ParseURL::getQueryParam(q, "bar"), "2");
EXPECT_EQ(ParseURL::getQueryParam(q, "baz"), "");
EXPECT_EQ(ParseURL::getQueryParam(q, "bazz"), "3");
EXPECT_EQ(ParseURL::getQueryParam(q, "bak"), "");
EXPECT_FALSE(ParseURL::getQueryParam(q, "fooo").has_value());
}