Skip to content

Commit

Permalink
fix(metadata): add metadata validator.
Browse files Browse the repository at this point in the history
  • Loading branch information
qkaiser committed Apr 25, 2023
1 parent 75548d2 commit 99944e3
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion unblob/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ def metadata_converter(obj: Union[Dict, Instance]) -> dict:
raise ValueError("Can only convert dict or Instance")


def metadata_validator(instance, attribute, value):
if attribute.name == "metadata" and isinstance(instance, Chunk):
for k, _ in value.items():
if not isinstance(k, str):
raise TypeError("metadata keys must be string")


@attr.define(frozen=True)
class Task:
path: Path
Expand Down Expand Up @@ -100,7 +107,9 @@ class ValidChunk(Chunk):

handler: "Handler" = attr.ib(init=False, eq=False)
is_encrypted: bool = attr.ib(default=False)
metadata: dict = attr.ib(factory=dict, converter=metadata_converter)
metadata: dict = attr.ib(
factory=dict, converter=metadata_converter, validator=metadata_validator
)

def extract(self, inpath: Path, outdir: Path):
if self.is_encrypted:
Expand Down

0 comments on commit 99944e3

Please sign in to comment.