File size: 2,056 Bytes
138ef71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import re
from log import log


class ValidationEngine:
    def __init__(self):
        pass

    def validate_parameters(self, intent_def, variables):
        """

        Checks all parameters defined in the intent against provided variables.

        Returns: (is_valid, error_messages)

        """
        is_valid = True
        error_messages = []

        for param_def in intent_def.get("parameters", []):
            name = param_def.get("name")
            expected_type = param_def.get("type", "string")
            regex = param_def.get("regex")
            validation_message = param_def.get("validation_message", f"Invalid value for {name}.")

            value = variables.get(name)

            # Check existence
            if value is None:
                continue  # Missing parameters are handled elsewhere

            # Type check
            if expected_type == "string":
                if not isinstance(value, str):
                    is_valid = False
                    error_messages.append(f"{validation_message} Expected a string.")
                    continue
            elif expected_type == "int":
                if not isinstance(value, int):
                    is_valid = False
                    error_messages.append(f"{validation_message} Expected an integer.")
                    continue
            elif expected_type == "float":
                if not isinstance(value, float):
                    is_valid = False
                    error_messages.append(f"{validation_message} Expected a float.")
                    continue

            # Regex check
            if regex and isinstance(value, str):
                if not re.match(regex, value):
                    is_valid = False
                    error_messages.append(validation_message)

        if is_valid:
            log("βœ… Parameter validation passed.")
        else:
            log(f"❌ Parameter validation failed: {error_messages}")

        return is_valid, error_messages