changeset 131:44f33160f884

generate: Update template to new Download API
author Lewin Bormann <lbo@spheniscida.de>
date Mon, 26 Oct 2020 10:44:52 +0100
parents 3db9fcf07b0a
children f87d7be7c3d7
files generate/generate.py generate/templates.py
diffstat 2 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/generate/generate.py	Mon Oct 26 10:44:34 2020 +0100
+++ b/generate/generate.py	Mon Oct 26 10:44:52 2020 +0100
@@ -313,6 +313,7 @@
                 'param_type':
                 params_type_name,
                 'in_type': in_type,
+                'download_in_type': in_type if in_type else 'EmptyRequest',
                 'out_type':
                 out_type,
                 'base_path':
--- a/generate/templates.py	Mon Oct 26 10:44:34 2020 +0100
+++ b/generate/templates.py	Mon Oct 26 10:44:52 2020 +0100
@@ -146,7 +146,7 @@
 
     let full_uri = path + &url_params;
 
-    let opt_request: Option<EmptyRequest> = None;
+    let opt_request: Option<&EmptyRequest> = None;
     {{#in_type}}
     let opt_request = Some(req);
     {{/in_type}}
@@ -187,7 +187,7 @@
     {{/global_params_name}}
 
     let full_uri = path + &url_params;
-    let opt_request: Option<EmptyRequest> = None;
+    let opt_request: Option<&EmptyRequest> = None;
     {{#in_type}}
     let opt_request = Some(req);
     {{/in_type}}
@@ -232,7 +232,7 @@
 
     let full_uri = path + &url_params;
 
-    let opt_request: Option<EmptyRequest> = None;
+    let opt_request: Option<&EmptyRequest> = None;
     {{#in_type}}
     let opt_request = Some(req);
     {{/in_type}}
@@ -260,10 +260,9 @@
 /// or a non-JSON type, the returned value indicates if a download took place or data was written to
 /// `dst`. If `dst` is `None` despite data being available for download, `ApiError::DataAvailableError`
 /// is returned.
-pub async fn {{{name}}}(
-    &mut self, params: &{{{param_type}}}, {{#in_type}}req: &{{{in_type}}},{{/in_type}}
-    dst: Option<&mut (dyn tokio::io::AsyncWrite + std::marker::Unpin)>)
-    -> Result<DownloadResponse<{{out_type}}>> {
+pub async fn {{{name}}}<'a>(
+    &'a mut self, params: &{{{param_type}}}, {{#in_type}}req: &'a {{{in_type}}}{{/in_type}})
+    -> Result<Download<'a, {{{download_in_type}}}, {{{out_type}}}>> {
 
     let rel_path = {{{rel_path_expr}}};
     let path = "{{{base_path}}}".to_string() + &rel_path;
@@ -284,12 +283,13 @@
     {{/global_params_name}}
 
     let full_uri = path + &url_params;
-    let opt_request: Option<EmptyRequest> = None;
+    let opt_request: Option<&EmptyRequest> = None;
     {{#in_type}}
     let opt_request = Some(req);
     {{/in_type}}
 
-    do_download(&self.client, &full_uri, &[(hyper::header::AUTHORIZATION, format!("Bearer {token}", token=tok.as_str()))],
-        "{{{http_method}}}", opt_request, dst).await
+    do_download(&self.client, &full_uri,
+        vec![(hyper::header::AUTHORIZATION, format!("Bearer {token}", token=tok.as_str()))],
+        "{{{http_method}}}".into(), opt_request).await
   }
 '''