|
3 | 3 | import base64 |
4 | 4 | import typing |
5 | 5 | from collections.abc import AsyncIterator, Iterator |
| 6 | +from urllib.parse import parse_qs, urlencode, urlparse, urlunparse |
6 | 7 |
|
7 | 8 | from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper |
8 | 9 | from ..core.request_options import RequestOptions |
@@ -80,15 +81,19 @@ def get( |
80 | 81 | params={"limit": 10}, |
81 | 82 | ) |
82 | 83 | """ |
| 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)) |
83 | 90 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
84 | 91 | downstream_headers = { |
85 | 92 | f"x-pd-proxy-{header}": value |
86 | 93 | for header, value in (headers or {}).items() |
87 | 94 | } |
88 | 95 | request_options = RequestOptions( |
89 | | - additional_headers=downstream_headers, |
90 | | - additional_query_parameters=params or {}, |
91 | | - ) |
| 96 | + additional_headers=downstream_headers, ) |
92 | 97 | ctx = self._raw_client.get( |
93 | 98 | url_64, |
94 | 99 | external_user_id=external_user_id, |
@@ -168,15 +173,19 @@ def post( |
168 | 173 | body={"key": "value"}, |
169 | 174 | ) |
170 | 175 | """ |
| 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)) |
171 | 182 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
172 | 183 | downstream_headers = { |
173 | 184 | f"x-pd-proxy-{header}": value |
174 | 185 | for header, value in (headers or {}).items() |
175 | 186 | } |
176 | 187 | request_options = RequestOptions( |
177 | | - additional_headers=downstream_headers, |
178 | | - additional_query_parameters=params or {}, |
179 | | - ) |
| 188 | + additional_headers=downstream_headers, ) |
180 | 189 | ctx = self._raw_client.post( |
181 | 190 | url_64, |
182 | 191 | external_user_id=external_user_id, |
@@ -257,15 +266,19 @@ def put( |
257 | 266 | body={"key": "value"}, |
258 | 267 | ) |
259 | 268 | """ |
| 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)) |
260 | 275 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
261 | 276 | downstream_headers = { |
262 | 277 | f"x-pd-proxy-{header}": value |
263 | 278 | for header, value in (headers or {}).items() |
264 | 279 | } |
265 | 280 | request_options = RequestOptions( |
266 | | - additional_headers=downstream_headers, |
267 | | - additional_query_parameters=params or {}, |
268 | | - ) |
| 281 | + additional_headers=downstream_headers, ) |
269 | 282 | ctx = self._raw_client.put( |
270 | 283 | url_64, |
271 | 284 | external_user_id=external_user_id, |
@@ -338,15 +351,19 @@ def delete( |
338 | 351 | headers={"Extra-Downstream-Header": "some value"} |
339 | 352 | ) |
340 | 353 | """ |
| 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)) |
341 | 360 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
342 | 361 | downstream_headers = { |
343 | 362 | f"x-pd-proxy-{header}": value |
344 | 363 | for header, value in (headers or {}).items() |
345 | 364 | } |
346 | 365 | request_options = RequestOptions( |
347 | | - additional_headers=downstream_headers, |
348 | | - additional_query_parameters=params or {}, |
349 | | - ) |
| 366 | + additional_headers=downstream_headers, ) |
350 | 367 | ctx = self._raw_client.delete( |
351 | 368 | url_64, |
352 | 369 | external_user_id=external_user_id, |
@@ -426,15 +443,19 @@ def patch( |
426 | 443 | body={"key": "value"}, |
427 | 444 | ) |
428 | 445 | """ |
| 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)) |
429 | 452 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
430 | 453 | downstream_headers = { |
431 | 454 | f"x-pd-proxy-{header}": value |
432 | 455 | for header, value in (headers or {}).items() |
433 | 456 | } |
434 | 457 | request_options = RequestOptions( |
435 | | - additional_headers=downstream_headers, |
436 | | - additional_query_parameters=params or {}, |
437 | | - ) |
| 458 | + additional_headers=downstream_headers, ) |
438 | 459 | ctx = self._raw_client.patch( |
439 | 460 | url_64, |
440 | 461 | external_user_id=external_user_id, |
@@ -534,15 +555,19 @@ async def main() -> None: |
534 | 555 |
|
535 | 556 | asyncio.run(main()) |
536 | 557 | """ |
| 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)) |
537 | 564 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
538 | 565 | downstream_headers = { |
539 | 566 | f"x-pd-proxy-{header}": value |
540 | 567 | for header, value in (headers or {}).items() |
541 | 568 | } |
542 | 569 | request_options = RequestOptions( |
543 | | - additional_headers=downstream_headers, |
544 | | - additional_query_parameters=params or {}, |
545 | | - ) |
| 570 | + additional_headers=downstream_headers, ) |
546 | 571 | ctx = self._raw_client.get( |
547 | 572 | url_64, |
548 | 573 | external_user_id=external_user_id, |
@@ -630,15 +655,19 @@ async def main() -> None: |
630 | 655 |
|
631 | 656 | asyncio.run(main()) |
632 | 657 | """ |
| 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)) |
633 | 664 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
634 | 665 | downstream_headers = { |
635 | 666 | f"x-pd-proxy-{header}": value |
636 | 667 | for header, value in (headers or {}).items() |
637 | 668 | } |
638 | 669 | request_options = RequestOptions( |
639 | | - additional_headers=downstream_headers, |
640 | | - additional_query_parameters=params or {}, |
641 | | - ) |
| 670 | + additional_headers=downstream_headers, ) |
642 | 671 | ctx = self._raw_client.post( |
643 | 672 | url_64, |
644 | 673 | external_user_id=external_user_id, |
@@ -727,15 +756,19 @@ async def main() -> None: |
727 | 756 |
|
728 | 757 | asyncio.run(main()) |
729 | 758 | """ |
| 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)) |
730 | 765 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
731 | 766 | downstream_headers = { |
732 | 767 | f"x-pd-proxy-{header}": value |
733 | 768 | for header, value in (headers or {}).items() |
734 | 769 | } |
735 | 770 | request_options = RequestOptions( |
736 | | - additional_headers=downstream_headers, |
737 | | - additional_query_parameters=params or {}, |
738 | | - ) |
| 771 | + additional_headers=downstream_headers, ) |
739 | 772 | ctx = self._raw_client.put( |
740 | 773 | url_64, |
741 | 774 | external_user_id=external_user_id, |
@@ -816,15 +849,19 @@ async def main() -> None: |
816 | 849 |
|
817 | 850 | asyncio.run(main()) |
818 | 851 | """ |
| 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)) |
819 | 858 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
820 | 859 | downstream_headers = { |
821 | 860 | f"x-pd-proxy-{header}": value |
822 | 861 | for header, value in (headers or {}).items() |
823 | 862 | } |
824 | 863 | request_options = RequestOptions( |
825 | | - additional_headers=downstream_headers, |
826 | | - additional_query_parameters=params or {}, |
827 | | - ) |
| 864 | + additional_headers=downstream_headers, ) |
828 | 865 | ctx = self._raw_client.delete( |
829 | 866 | url_64, |
830 | 867 | external_user_id=external_user_id, |
@@ -912,15 +949,19 @@ async def main() -> None: |
912 | 949 |
|
913 | 950 | asyncio.run(main()) |
914 | 951 | """ |
| 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)) |
915 | 958 | url_64 = base64.urlsafe_b64encode(url.encode()).decode() |
916 | 959 | downstream_headers = { |
917 | 960 | f"x-pd-proxy-{header}": value |
918 | 961 | for header, value in (headers or {}).items() |
919 | 962 | } |
920 | 963 | request_options = RequestOptions( |
921 | | - additional_headers=downstream_headers, |
922 | | - additional_query_parameters=params or {}, |
923 | | - ) |
| 964 | + additional_headers=downstream_headers, ) |
924 | 965 | ctx = self._raw_client.patch( |
925 | 966 | url_64, |
926 | 967 | external_user_id=external_user_id, |
|
0 commit comments