Skip to content

Commit 1033d8a

Browse files
committed
Include query params in the encoded URL
1 parent e877151 commit 1033d8a

File tree

1 file changed

+71
-30
lines changed

1 file changed

+71
-30
lines changed

src/pipedream/proxy/client.py

Lines changed: 71 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import base64
44
import typing
55
from collections.abc import AsyncIterator, Iterator
6+
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
67

78
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
89
from ..core.request_options import RequestOptions
@@ -80,15 +81,19 @@ def get(
8081
params={"limit": 10},
8182
)
8283
"""
84+
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))
8390
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
8491
downstream_headers = {
8592
f"x-pd-proxy-{header}": value
8693
for header, value in (headers or {}).items()
8794
}
8895
request_options = RequestOptions(
89-
additional_headers=downstream_headers,
90-
additional_query_parameters=params or {},
91-
)
96+
additional_headers=downstream_headers, )
9297
ctx = self._raw_client.get(
9398
url_64,
9499
external_user_id=external_user_id,
@@ -168,15 +173,19 @@ def post(
168173
body={"key": "value"},
169174
)
170175
"""
176+
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))
171182
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
172183
downstream_headers = {
173184
f"x-pd-proxy-{header}": value
174185
for header, value in (headers or {}).items()
175186
}
176187
request_options = RequestOptions(
177-
additional_headers=downstream_headers,
178-
additional_query_parameters=params or {},
179-
)
188+
additional_headers=downstream_headers, )
180189
ctx = self._raw_client.post(
181190
url_64,
182191
external_user_id=external_user_id,
@@ -257,15 +266,19 @@ def put(
257266
body={"key": "value"},
258267
)
259268
"""
269+
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))
260275
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
261276
downstream_headers = {
262277
f"x-pd-proxy-{header}": value
263278
for header, value in (headers or {}).items()
264279
}
265280
request_options = RequestOptions(
266-
additional_headers=downstream_headers,
267-
additional_query_parameters=params or {},
268-
)
281+
additional_headers=downstream_headers, )
269282
ctx = self._raw_client.put(
270283
url_64,
271284
external_user_id=external_user_id,
@@ -338,15 +351,19 @@ def delete(
338351
headers={"Extra-Downstream-Header": "some value"}
339352
)
340353
"""
354+
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))
341360
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
342361
downstream_headers = {
343362
f"x-pd-proxy-{header}": value
344363
for header, value in (headers or {}).items()
345364
}
346365
request_options = RequestOptions(
347-
additional_headers=downstream_headers,
348-
additional_query_parameters=params or {},
349-
)
366+
additional_headers=downstream_headers, )
350367
ctx = self._raw_client.delete(
351368
url_64,
352369
external_user_id=external_user_id,
@@ -426,15 +443,19 @@ def patch(
426443
body={"key": "value"},
427444
)
428445
"""
446+
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))
429452
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
430453
downstream_headers = {
431454
f"x-pd-proxy-{header}": value
432455
for header, value in (headers or {}).items()
433456
}
434457
request_options = RequestOptions(
435-
additional_headers=downstream_headers,
436-
additional_query_parameters=params or {},
437-
)
458+
additional_headers=downstream_headers, )
438459
ctx = self._raw_client.patch(
439460
url_64,
440461
external_user_id=external_user_id,
@@ -534,15 +555,19 @@ async def main() -> None:
534555
535556
asyncio.run(main())
536557
"""
558+
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))
537564
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
538565
downstream_headers = {
539566
f"x-pd-proxy-{header}": value
540567
for header, value in (headers or {}).items()
541568
}
542569
request_options = RequestOptions(
543-
additional_headers=downstream_headers,
544-
additional_query_parameters=params or {},
545-
)
570+
additional_headers=downstream_headers, )
546571
ctx = self._raw_client.get(
547572
url_64,
548573
external_user_id=external_user_id,
@@ -630,15 +655,19 @@ async def main() -> None:
630655
631656
asyncio.run(main())
632657
"""
658+
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))
633664
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
634665
downstream_headers = {
635666
f"x-pd-proxy-{header}": value
636667
for header, value in (headers or {}).items()
637668
}
638669
request_options = RequestOptions(
639-
additional_headers=downstream_headers,
640-
additional_query_parameters=params or {},
641-
)
670+
additional_headers=downstream_headers, )
642671
ctx = self._raw_client.post(
643672
url_64,
644673
external_user_id=external_user_id,
@@ -727,15 +756,19 @@ async def main() -> None:
727756
728757
asyncio.run(main())
729758
"""
759+
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))
730765
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
731766
downstream_headers = {
732767
f"x-pd-proxy-{header}": value
733768
for header, value in (headers or {}).items()
734769
}
735770
request_options = RequestOptions(
736-
additional_headers=downstream_headers,
737-
additional_query_parameters=params or {},
738-
)
771+
additional_headers=downstream_headers, )
739772
ctx = self._raw_client.put(
740773
url_64,
741774
external_user_id=external_user_id,
@@ -816,15 +849,19 @@ async def main() -> None:
816849
817850
asyncio.run(main())
818851
"""
852+
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))
819858
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
820859
downstream_headers = {
821860
f"x-pd-proxy-{header}": value
822861
for header, value in (headers or {}).items()
823862
}
824863
request_options = RequestOptions(
825-
additional_headers=downstream_headers,
826-
additional_query_parameters=params or {},
827-
)
864+
additional_headers=downstream_headers, )
828865
ctx = self._raw_client.delete(
829866
url_64,
830867
external_user_id=external_user_id,
@@ -912,15 +949,19 @@ async def main() -> None:
912949
913950
asyncio.run(main())
914951
"""
952+
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))
915958
url_64 = base64.urlsafe_b64encode(url.encode()).decode()
916959
downstream_headers = {
917960
f"x-pd-proxy-{header}": value
918961
for header, value in (headers or {}).items()
919962
}
920963
request_options = RequestOptions(
921-
additional_headers=downstream_headers,
922-
additional_query_parameters=params or {},
923-
)
964+
additional_headers=downstream_headers, )
924965
ctx = self._raw_client.patch(
925966
url_64,
926967
external_user_id=external_user_id,

0 commit comments

Comments
 (0)