changeset 221:a19056bcc2c9

correctly handle Option<DateTime<Utc>> parameters
author Daniel Boline <ddboline@gmail.com>
date Sun, 28 Feb 2021 11:31:49 -0500
parents 24111655a562
children 2f7355889c05
files generate/generate.py generate/templates.py
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/generate/generate.py	Sun Feb 28 11:17:03 2021 -0500
+++ b/generate/generate.py	Sun Feb 28 11:31:49 2021 -0500
@@ -265,6 +265,7 @@
             }
             req_query_parameters = []
             opt_query_parameters = []
+            opt_time_query_parameters = []
             if global_params:
                 struct['fields'].append({
                     'name': replace_keywords(rust_identifier(global_params)),
@@ -290,10 +291,14 @@
                         if param.get('required', False):
                             req_query_parameters.append(field)
                         else:
-                            opt_query_parameters.append(field)
+                            if 'DateTime' in field['typ']:
+                                opt_time_query_parameters.append(field)
+                            else:
+                                opt_query_parameters.append(field)
             frags.append(chevron.render(SchemaStructTmpl, struct))
             struct['required_fields'] = req_query_parameters
             struct['optional_fields'] = opt_query_parameters
+            struct['datetime_fields'] = opt_time_query_parameters
             frags.append(chevron.render(SchemaDisplayTmpl, struct))
             structs.append(struct)
         # Generate parameter types for subresources.
--- a/generate/templates.py	Sun Feb 28 11:17:03 2021 -0500
+++ b/generate/templates.py	Sun Feb 28 11:31:49 2021 -0500
@@ -114,6 +114,11 @@
             write!(f, "&{{{original_name}}}={}", percent_encode(format!("{}", v).as_bytes(), NON_ALPHANUMERIC).to_string())?;
         }
         {{/optional_fields}}
+        {{#datetime_fields}}
+        if let Some(ref v) = self.{{{name}}} {
+            write!(f, "&{{{original_name}}}={}", percent_encode(v.to_rfc3339().as_bytes(), NON_ALPHANUMERIC).to_string())?;
+        }
+        {{/datetime_fields}}
         Ok(())
     }
 }