all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pdm-devel] [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string
@ 2025-02-26 15:00 Stefan Hanreich
  2025-02-26 15:00 ` [pdm-devel] [PATCH pve-api-types v2 2/2] regenerate Stefan Hanreich
  2025-02-26 15:11 ` [pdm-devel] applied-series: [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Wolfgang Bumiller
  0 siblings, 2 replies; 3+ messages in thread
From: Stefan Hanreich @ 2025-02-26 15:00 UTC (permalink / raw)
  To: pdm-devel

Commit 076b7f75 introduced a regression where endpoints that have URL
parameters ('/url/with/{param}') would not get generated with format!
calls. This causes URL endpoints such as get_task_status to fail,
since those parameters do not get substituted.

Add a helper for printing the URL that handles all cases and use the
helper instead of generating the URL directly in the respective
methods.

Fixes: 076b7f75 ("generator: avoid useless format!() calls")
Suggested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
 pve-api-types/generator-lib/Schema2Rust.pm | 25 ++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/pve-api-types/generator-lib/Schema2Rust.pm b/pve-api-types/generator-lib/Schema2Rust.pm
index 1ba21ed..29d1743 100644
--- a/pve-api-types/generator-lib/Schema2Rust.pm
+++ b/pve-api-types/generator-lib/Schema2Rust.pm
@@ -437,6 +437,18 @@ my sub return_expr : prototype($$) ($def, $expr) {
     return $expr;
 }
 
+my sub print_url: prototype($$;$) {
+    my ($out, $def, $has_query) = @_;
+
+    if ($has_query) {
+        print {$out} "    let url = &format!(\"/api2/extjs$def->{url}\{query}\");\n";
+    } elsif (defined($def->{url_params}) && $def->{url_params}->@*) {
+        print {$out} "    let url = &format!(\"/api2/extjs$def->{url}\");\n";
+    } else {
+        print {$out} "    let url = \"/api2/extjs$def->{url}\";\n";
+    }
+}
+
 my sub print_method_without_body : prototype($$$$$) {
     my ($out, $name, $def, $method, $trait) = @_;
 
@@ -486,8 +498,8 @@ my sub print_method_without_body : prototype($$$$$) {
                 print {$out} "    add_query_arg(&mut query, &mut sep, \"$name\", &p_$rust_name);\n";
             }
         }
-        print {$out} "    let url = &format!(\"/api2/extjs$def->{url}\{query}\");\n";
-    } elsif (defined($input = $def->{input})) {
+        print_url($out, $def, 1);
+    } elsif (defined($input = $def->{input}) && $input->@*) {
         for my $arg ($input->@*) {
             print {$out} "    $arg->{rust_name}: $arg->{type},\n";
         }
@@ -510,9 +522,9 @@ my sub print_method_without_body : prototype($$$$$) {
                     print {$out} "    add_query_arg(&mut query, &mut sep, \"$name\", &$rust_name);\n";
                 }
             }
-            print {$out} "    let url = &format!(\"/api2/extjs$def->{url}\{query}\");\n";
+            print_url($out, $def, 1);
         } else {
-            print {$out} "    let url = \"/api2/extjs$def->{url}\";\n";
+            print_url($out, $def);
         }
     } else {
         print {$out} ") -> Result<$def->{output_type}, Error> {\n";
@@ -520,7 +532,8 @@ my sub print_method_without_body : prototype($$$$$) {
             print_default_impl($out, $name);
             return;
         }
-        print {$out} "    let url = \"/api2/extjs$def->{url}\";\n";
+
+        print_url($out, $def);
     }
 
     my $call = return_expr($def, "self.0.$method(url).await?");
@@ -553,7 +566,7 @@ my sub print_method_with_body : prototype($$$$$) {
         return;
     }
     # print {$out} "    // self.login().await?;\n";
-    print {$out} "    let url = \"/api2/extjs$def->{url}\";\n";
+    print_url($out, $def);
         my $call = return_expr($def, "self.0.${method}(url, &params).await?");
         print {$out} "    $call\n";
     print {$out} "}\n\n";
-- 
2.39.5


_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-02-26 15:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-26 15:00 [pdm-devel] [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Stefan Hanreich
2025-02-26 15:00 ` [pdm-devel] [PATCH pve-api-types v2 2/2] regenerate Stefan Hanreich
2025-02-26 15:11 ` [pdm-devel] applied-series: [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal