From 88adfe44406690496de618f6850827bca655624e Mon Sep 17 00:00:00 2001 From: Paul Farcasanu Date: Thu, 30 Jan 2025 07:04:53 -0800 Subject: [PATCH] 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 --- proxygen/lib/utils/ParseURL.cpp | 7 +++---- proxygen/lib/utils/ParseURL.h | 4 ++-- proxygen/lib/utils/test/ParseURLTest.cpp | 13 +++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/proxygen/lib/utils/ParseURL.cpp b/proxygen/lib/utils/ParseURL.cpp index 97612119f0..88192fdfd3 100644 --- a/proxygen/lib/utils/ParseURL.cpp +++ b/proxygen/lib/utils/ParseURL.cpp @@ -255,10 +255,9 @@ void ParseURL::stripBrackets() noexcept { } folly::Optional 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; } diff --git a/proxygen/lib/utils/ParseURL.h b/proxygen/lib/utils/ParseURL.h index d7195eaf73..9f4c0ac142 100644 --- a/proxygen/lib/utils/ParseURL.h +++ b/proxygen/lib/utils/ParseURL.h @@ -158,8 +158,8 @@ class ParseURL { FB_EXPORT void stripBrackets() noexcept; - FOLLY_NODISCARD folly::Optional getQueryParam( - folly::StringPiece name) const noexcept; + FOLLY_NODISCARD static folly::Optional getQueryParam( + folly::StringPiece query, const folly::StringPiece name) noexcept; private: void moveHostAndAuthority(ParseURL&& goner) { diff --git a/proxygen/lib/utils/test/ParseURLTest.cpp b/proxygen/lib/utils/test/ParseURLTest.cpp index 7fdd4b0465..5cef16a01a 100644 --- a/proxygen/lib/utils/test/ParseURLTest.cpp +++ b/proxygen/lib/utils/test/ParseURLTest.cpp @@ -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()); }