Skip to content

Commit

Permalink
Merge pull request #507 from M4SS-Code/correct-base64-dictionary
Browse files Browse the repository at this point in the history
Detect fields using base64 URL encoding
  • Loading branch information
Byron authored Jun 12, 2024
2 parents 09580c6 + 59cd9e1 commit 46490ae
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
23 changes: 16 additions & 7 deletions src/generator/lib/rust_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,23 @@ def serde_replace_inner_ty(self, from_to):
self.members[i] = Base("_")
return changed

def serde_as(self) -> Tuple["RustType", bool]:
def serde_as(self, description) -> Tuple["RustType", bool]:
copied = deepcopy(self)
from_to = {
Vec(Base("u8")): Base("::client::serde::standard_base64::Wrapper"),
Base("client::chrono::Duration"): Base("::client::serde::duration::Wrapper"),
Base("i64"): Base("::client::serde_with::DisplayFromStr"),
Base("u64"): Base("::client::serde_with::DisplayFromStr"),
}

if "base64url" in description or "URL-safe Base64" in description:
from_to = {
Vec(Base("u8")): Base("::client::serde::urlsafe_base64::Wrapper"),
Base("client::chrono::Duration"): Base("::client::serde::duration::Wrapper"),
Base("i64"): Base("::client::serde_with::DisplayFromStr"),
Base("u64"): Base("::client::serde_with::DisplayFromStr"),
}
else:
from_to = {
Vec(Base("u8")): Base("::client::serde::standard_base64::Wrapper"),
Base("client::chrono::Duration"): Base("::client::serde::duration::Wrapper"),
Base("i64"): Base("::client::serde_with::DisplayFromStr"),
Base("u64"): Base("::client::serde_with::DisplayFromStr"),
}

changed = copied.serde_replace_inner_ty(from_to)

Expand Down
2 changes: 1 addition & 1 deletion src/generator/lib/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ def to_serde_type(
allow_optionals=True,
_is_recursive=False
) -> Tuple[RustType, bool]:
return to_rust_type_inner(schemas, schema_name, property_name, t, allow_optionals, _is_recursive).serde_as()
return to_rust_type_inner(schemas, schema_name, property_name, t, allow_optionals, _is_recursive).serde_as(t.get('description', 'no description'))


def to_rust_type_inner(
Expand Down

0 comments on commit 46490ae

Please sign in to comment.