From f8edac7f1bb42f83c864c5bb31818084ab601c44 Mon Sep 17 00:00:00 2001 From: Pradish Bijukchhe Date: Tue, 24 Sep 2024 22:56:03 +0545 Subject: [PATCH] Add patch method support --- clientele/generators/basic/templates/http_py.jinja2 | 5 +++++ clientele/generators/standard/generators/clients.py | 6 ++++-- .../generators/standard/templates/sync_methods.jinja2 | 8 ++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/clientele/generators/basic/templates/http_py.jinja2 b/clientele/generators/basic/templates/http_py.jinja2 index 5657027..4aec2a7 100644 --- a/clientele/generators/basic/templates/http_py.jinja2 +++ b/clientele/generators/basic/templates/http_py.jinja2 @@ -63,6 +63,11 @@ def put(url: str, data: dict, headers: typing.Optional[dict] = None) -> httpx.Re return client.put(parse_url(url), json=data, headers=headers) +def patch(url: str, data: dict, headers: typing.Optional[dict] = None) -> httpx.Response: + """Issue an HTTP PATCH request""" + return client.patch(parse_url(url), json=data, headers=headers) + + def delete(url: str, headers: typing.Optional[dict] = None) -> httpx.Response: """Issue an HTTP DELETE request""" return client.delete(parse_url(url), headers=headers) diff --git a/clientele/generators/standard/generators/clients.py b/clientele/generators/standard/generators/clients.py index deb130c..4d24115 100644 --- a/clientele/generators/standard/generators/clients.py +++ b/clientele/generators/standard/generators/clients.py @@ -56,6 +56,7 @@ def __init__( delete="get_method.jinja2", post="post_method.jinja2", put="post_method.jinja2", + patch="post_method.jinja2", ) def generate_paths(self) -> None: @@ -64,6 +65,7 @@ def generate_paths(self) -> None: console.log(f"Generated {self.results['get']} GET methods...") console.log(f"Generated {self.results['post']} POST methods...") console.log(f"Generated {self.results['put']} PUT methods...") + console.log(f"Generated {self.results['patch']} PATCH methods...") console.log(f"Generated {self.results['delete']} DELETE methods...") def generate_parameters(self, parameters: list[dict], additional_parameters: list[dict]) -> ParametersResponse: @@ -197,9 +199,9 @@ def generate_function( api_url = url + utils.create_query_args(list(query_args.keys())) else: api_url = url - if method in ["post", "put"] and not operation.get("requestBody"): + if method in ["post", "put", "patch"] and not operation.get("requestBody"): data_class_name = "None" - elif method in ["post", "put"]: + elif method in ["post", "put", "patch"]: data_class_name = self.generate_input_types(operation.get("requestBody", {})) else: data_class_name = None diff --git a/clientele/generators/standard/templates/sync_methods.jinja2 b/clientele/generators/standard/templates/sync_methods.jinja2 index 1f5dfba..3526c35 100644 --- a/clientele/generators/standard/templates/sync_methods.jinja2 +++ b/clientele/generators/standard/templates/sync_methods.jinja2 @@ -23,6 +23,14 @@ def put(url: str, data: dict, headers: typing.Optional[dict] = None) -> httpx.Re return client.put(parse_url(url), json=json_data, headers=client_headers) +def patch(url: str, data: dict, headers: typing.Optional[dict] = None) -> httpx.Response: + """Issue an HTTP PATCH request""" + if headers: + client_headers.update(headers) + json_data = json.loads(json.dumps(data, default=json_serializer)) + return client.patch(parse_url(url), json=json_data, headers=client_headers) + + def delete(url: str, headers: typing.Optional[dict] = None) -> httpx.Response: """Issue an HTTP DELETE request""" if headers: