1
0
Fork 0

feat: naive implementation of ssh_url deserialization

This commit is contained in:
aviac 2024-05-10 09:00:27 +02:00
parent 1c5506c707
commit 9b2864bd70
No known key found for this signature in database
GPG key ID: 644781002BDEA982
3 changed files with 41 additions and 5 deletions

View file

@ -63,7 +63,7 @@ pub fn create_struct_for_definition(
crate::schema_subtype_name(spec, name, prop_name, value, &mut field_ty)?;
crate::schema_subtypes(spec, name, prop_name, value, &mut subtypes)?;
}
if field_name.ends_with("url") && field_name != "ssh_url" && field_ty == "String" {
if field_name.ends_with("url") && field_ty == "String" {
field_ty = "url::Url".into()
}
if field_ty == name {
@ -73,7 +73,16 @@ pub fn create_struct_for_definition(
field_ty = format!("Option<{field_ty}>")
}
if field_ty == "Option<url::Url>" {
fields.push_str("#[serde(deserialize_with = \"crate::none_if_blank_url\")]\n");
if field_name == "ssh_url" {
fields.push_str(
"#[serde(deserialize_with = \"crate::deserialize_optional_ssh_url\")]\n",
);
} else {
fields.push_str("#[serde(deserialize_with = \"crate::none_if_blank_url\")]\n");
}
}
if field_ty == "url::Url" && field_name == "ssh_url" {
fields.push_str("#[serde(deserialize_with = \"crate::deserialize_ssh_url\")]\n");
}
if field_ty == "time::OffsetDateTime" {
fields.push_str("#[serde(with = \"time::serde::rfc3339\")]\n");
@ -106,8 +115,8 @@ pub fn create_struct_for_definition(
}
}
if let Some(additonal_schema) = &schema.additional_properties {
let prop_ty = crate::schema_ref_type_name(spec, additonal_schema)?;
if let Some(additional_schema) = &schema.additional_properties {
let prop_ty = crate::schema_ref_type_name(spec, additional_schema)?;
fields.push_str("#[serde(flatten)]\n");
fields.push_str("pub additional: BTreeMap<String, ");
fields.push_str(&prop_ty);