validation.py 729 Bytes
class BaseError(Exception):
    pass


class HeaderRequiredError(BaseError):
    pass


class FieldRequiredError(BaseError):
    pass


def field_validation(d: dict, ref: dict):
    r = dict()
    for field, ref_value in ref.items():
        if field not in d:
            msg = f'Field {field} wajib ada'
            raise FieldRequiredError(msg)
        client_value = d[field]
        if isinstance(ref_value, dict):
            client_value = field_validation(client_value, ref_value)
        r[field] = client_value
    return r


def header_validation(headers: dict, ref: list):
    for field in ref:
        if field not in headers:
            msg = f'Header {field} wajib ada'
            raise HeaderRequiredError(msg)