| from flask_restful import fields | from flask_restful import fields | ||||
| from core.app.segments import SecretVariable, Variable | |||||
| from core.app.segments import SecretVariable, SegmentType, Variable | |||||
| from core.helper import encrypter | from core.helper import encrypter | ||||
| from fields.member_fields import simple_account_fields | from fields.member_fields import simple_account_fields | ||||
| from libs.helper import TimestampField | from libs.helper import TimestampField | ||||
| ENVIRONMENT_VARIABLE_SUPPORTED_TYPES = (SegmentType.STRING, SegmentType.NUMBER, SegmentType.SECRET) | |||||
| class EnvironmentVariableField(fields.Raw): | class EnvironmentVariableField(fields.Raw): | ||||
| def format(self, value): | def format(self, value): | ||||
| 'value': encrypter.obfuscated_token(value.value), | 'value': encrypter.obfuscated_token(value.value), | ||||
| 'value_type': value.value_type.value, | 'value_type': value.value_type.value, | ||||
| } | } | ||||
| elif isinstance(value, Variable): | |||||
| if isinstance(value, Variable): | |||||
| return { | return { | ||||
| 'id': value.id, | 'id': value.id, | ||||
| 'name': value.name, | 'name': value.name, | ||||
| 'value': value.value, | 'value': value.value, | ||||
| 'value_type': value.value_type.value, | 'value_type': value.value_type.value, | ||||
| } | } | ||||
| return value | |||||
| if isinstance(value, dict): | |||||
| value_type = value.get('value_type') | |||||
| if value_type not in ENVIRONMENT_VARIABLE_SUPPORTED_TYPES: | |||||
| raise ValueError(f'Unsupported environment variable value type: {value_type}') | |||||
| return value | |||||
| environment_variable_fields = { | environment_variable_fields = { |