Skip to content

Commit 83f8a07

Browse files
committed
Copilot feedback
1 parent 1033d8a commit 83f8a07

File tree

1 file changed

+20
-51
lines changed

1 file changed

+20
-51
lines changed

src/pipedream/proxy/client.py

Lines changed: 20 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@
1414
OMIT = typing.cast(typing.Any, ...)
1515

1616

17+
def _add_params_to_url(url: str, params: typing.Dict[str, typing.Any]) -> str:
18+
parsed = urlparse(url)
19+
existing_params = parse_qs(parsed.query)
20+
for key, value in params.items():
21+
existing_params[key] = value if isinstance(value, list) else [value]
22+
new_query = urlencode(existing_params, doseq=True)
23+
return urlunparse(parsed._replace(query=new_query))
24+
25+
1726
class ProxyClient:
1827

1928
def __init__(self, *, client_wrapper: SyncClientWrapper):
@@ -77,16 +86,12 @@ def get(
7786
url="https://example.com/api/endpoint",
7887
external_user_id="external_user_id",
7988
account_id="account_id",
80-
headers={"Extra-Downstream-Header": "some value"}
89+
headers={"Extra-Downstream-Header": "some value"},
8190
params={"limit": 10},
8291
)
8392
"""
8493
if params:
85-
parsed = urlparse(url)
86-
existing_params = parse_qs(parsed.query)
87-
existing_params.update(params)
88-
new_query = urlencode(existing_params, doseq=True)
89-
url = urlunparse(parsed._replace(query=new_query))
94+
url = _add_params_to_url(url, params)
9095
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
9196
downstream_headers = {
9297
f"x-pd-proxy-{header}": value
@@ -174,11 +179,7 @@ def post(
174179
)
175180
"""
176181
if params:
177-
parsed = urlparse(url)
178-
existing_params = parse_qs(parsed.query)
179-
existing_params.update(params)
180-
new_query = urlencode(existing_params, doseq=True)
181-
url = urlunparse(parsed._replace(query=new_query))
182+
url = _add_params_to_url(url, params)
182183
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
183184
downstream_headers = {
184185
f"x-pd-proxy-{header}": value
@@ -267,11 +268,7 @@ def put(
267268
)
268269
"""
269270
if params:
270-
parsed = urlparse(url)
271-
existing_params = parse_qs(parsed.query)
272-
existing_params.update(params)
273-
new_query = urlencode(existing_params, doseq=True)
274-
url = urlunparse(parsed._replace(query=new_query))
271+
url = _add_params_to_url(url, params)
275272
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
276273
downstream_headers = {
277274
f"x-pd-proxy-{header}": value
@@ -352,11 +349,7 @@ def delete(
352349
)
353350
"""
354351
if params:
355-
parsed = urlparse(url)
356-
existing_params = parse_qs(parsed.query)
357-
existing_params.update(params)
358-
new_query = urlencode(existing_params, doseq=True)
359-
url = urlunparse(parsed._replace(query=new_query))
352+
url = _add_params_to_url(url, params)
360353
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
361354
downstream_headers = {
362355
f"x-pd-proxy-{header}": value
@@ -444,11 +437,7 @@ def patch(
444437
)
445438
"""
446439
if params:
447-
parsed = urlparse(url)
448-
existing_params = parse_qs(parsed.query)
449-
existing_params.update(params)
450-
new_query = urlencode(existing_params, doseq=True)
451-
url = urlunparse(parsed._replace(query=new_query))
440+
url = _add_params_to_url(url, params)
452441
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
453442
downstream_headers = {
454443
f"x-pd-proxy-{header}": value
@@ -556,11 +545,7 @@ async def main() -> None:
556545
asyncio.run(main())
557546
"""
558547
if params:
559-
parsed = urlparse(url)
560-
existing_params = parse_qs(parsed.query)
561-
existing_params.update(params)
562-
new_query = urlencode(existing_params, doseq=True)
563-
url = urlunparse(parsed._replace(query=new_query))
548+
url = _add_params_to_url(url, params)
564549
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
565550
downstream_headers = {
566551
f"x-pd-proxy-{header}": value
@@ -656,11 +641,7 @@ async def main() -> None:
656641
asyncio.run(main())
657642
"""
658643
if params:
659-
parsed = urlparse(url)
660-
existing_params = parse_qs(parsed.query)
661-
existing_params.update(params)
662-
new_query = urlencode(existing_params, doseq=True)
663-
url = urlunparse(parsed._replace(query=new_query))
644+
url = _add_params_to_url(url, params)
664645
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
665646
downstream_headers = {
666647
f"x-pd-proxy-{header}": value
@@ -757,11 +738,7 @@ async def main() -> None:
757738
asyncio.run(main())
758739
"""
759740
if params:
760-
parsed = urlparse(url)
761-
existing_params = parse_qs(parsed.query)
762-
existing_params.update(params)
763-
new_query = urlencode(existing_params, doseq=True)
764-
url = urlunparse(parsed._replace(query=new_query))
741+
url = _add_params_to_url(url, params)
765742
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
766743
downstream_headers = {
767744
f"x-pd-proxy-{header}": value
@@ -850,11 +827,7 @@ async def main() -> None:
850827
asyncio.run(main())
851828
"""
852829
if params:
853-
parsed = urlparse(url)
854-
existing_params = parse_qs(parsed.query)
855-
existing_params.update(params)
856-
new_query = urlencode(existing_params, doseq=True)
857-
url = urlunparse(parsed._replace(query=new_query))
830+
url = _add_params_to_url(url, params)
858831
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
859832
downstream_headers = {
860833
f"x-pd-proxy-{header}": value
@@ -950,11 +923,7 @@ async def main() -> None:
950923
asyncio.run(main())
951924
"""
952925
if params:
953-
parsed = urlparse(url)
954-
existing_params = parse_qs(parsed.query)
955-
existing_params.update(params)
956-
new_query = urlencode(existing_params, doseq=True)
957-
url = urlunparse(parsed._replace(query=new_query))
926+
url = _add_params_to_url(url, params)
958927
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
959928
downstream_headers = {
960929
f"x-pd-proxy-{header}": value

0 commit comments

Comments
 (0)