INNER CODE UNIT · Python

validate

oneclickvirt/ecs · agent/server.py:32

def validate(value, spec, name="arguments"):
    expected = spec.get("type")
    if expected == "object":
        if not isinstance(value, dict):
            raise ValueError(name + " must be an object")
        props = spec.get("properties", {})
        if set(spec.get("required", [])) - value.keys():
            raise ValueError(name + " has missing required fields")
        if not spec.get("additionalProperties", True) and value.keys() - props.keys():
            raise ValueError(name + " has unknown fields")
        for key, data in value.items():
            if key in props:
                validate(data, props[key], key)
    elif expected == "string":
        maximum = min(512, spec.get("maxLength", 512))
        if not isinstance(value, str) or len(value) > maximum:
            raise ValueError(name + " must be a string of at most " + str(maximum) + " characters")
        if "pattern" in spec and not re.fullmatch(spec["pattern"], value):

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…