Add human readable errors for config.json post

This commit is contained in:
amcmanu3 2024-08-06 12:39:26 -04:00
parent 44b5f2a809
commit 2cda66dd0b
2 changed files with 36 additions and 28 deletions

View File

@ -9,29 +9,27 @@ from app.classes.web.base_api_handler import BaseApiHandler
config_json_schema = { config_json_schema = {
"type": "object", "type": "object",
"properties": { "properties": {
"https_port": {"type": "integer"}, "https_port": {"type": "integer", "error": "typeInteger"},
"language": { "language": {"type": "string", "error": "typeString"},
"type": "string", "cookie_expire": {"type": "integer", "error": "typeInteger"},
}, "show_errors": {"type": "boolean", "error": "typeBool"},
"cookie_expire": {"type": "integer"}, "history_max_age": {"type": "integer", "error": "typeInteger"},
"show_errors": {"type": "boolean"}, "stats_update_frequency_seconds": {"type": "integer", "error": "typeInteger"},
"history_max_age": {"type": "integer"}, "delete_default_json": {"type": "boolean", "error": "typeBool"},
"stats_update_frequency_seconds": {"type": "integer"}, "show_contribute_link": {"type": "boolean", "error": "typeBool"},
"delete_default_json": {"type": "boolean"}, "virtual_terminal_lines": {"type": "integer", "error": "typeInteger"},
"show_contribute_link": {"type": "boolean"}, "max_log_lines": {"type": "integer", "error": "typeInteger"},
"virtual_terminal_lines": {"type": "integer"}, "max_audit_entries": {"type": "integer", "error": "typeInteger"},
"max_log_lines": {"type": "integer"}, "disabled_language_files": {"type": "array", "error": "typeList"},
"max_audit_entries": {"type": "integer"}, "stream_size_GB": {"type": "integer", "error": "typeInteger"},
"disabled_language_files": {"type": "array"}, "keywords": {"type": "array", "error": "typeList"},
"stream_size_GB": {"type": "integer"}, "allow_nsfw_profile_pictures": {"type": "boolean", "error": "typeBool"},
"keywords": {"type": "array"}, "enable_user_self_delete": {"type": "boolean", "error": "typeBool"},
"allow_nsfw_profile_pictures": {"type": "boolean"}, "reset_secrets_on_next_boot": {"type": "boolean", "error": "typeBool"},
"enable_user_self_delete": {"type": "boolean"}, "monitored_mounts": {"type": "array", "error": "typeList"},
"reset_secrets_on_next_boot": {"type": "boolean"}, "dir_size_poll_freq_minutes": {"type": "integer", "error": "typeInteger"},
"monitored_mounts": {"type": "array"}, "crafty_logs_delete_after_days": {"type": "integer", "error": "typeInteger"},
"dir_size_poll_freq_minutes": {"type": "integer"}, "big_bucket_repo": {"type": "string", "error": "typeString"},
"crafty_logs_delete_after_days": {"type": "integer"},
"big_bucket_repo": {"type": "string"},
}, },
"additionalProperties": False, "additionalProperties": False,
"minProperties": 1, "minProperties": 1,
@ -39,8 +37,8 @@ config_json_schema = {
customize_json_schema = { customize_json_schema = {
"type": "object", "type": "object",
"properties": { "properties": {
"photo": {"type": "string"}, "photo": {"type": "string", "error": "typeString"},
"opacity": {"type": "string"}, "opacity": {"type": "string", "error": "typeString"},
}, },
"additionalProperties": False, "additionalProperties": False,
"minProperties": 1, "minProperties": 1,
@ -49,7 +47,7 @@ customize_json_schema = {
photo_delete_schema = { photo_delete_schema = {
"type": "object", "type": "object",
"properties": { "properties": {
"photo": {"type": "string"}, "photo": {"type": "string", "error": "typeString"},
}, },
"additionalProperties": False, "additionalProperties": False,
"minProperties": 1, "minProperties": 1,
@ -110,12 +108,18 @@ class ApiCraftyConfigIndexHandler(BaseApiHandler):
try: try:
validate(data, config_json_schema) validate(data, config_json_schema)
except ValidationError as e: except ValidationError as e:
offending_key = e.path[0] if e.path else None
err = f"""{self.translator.translate(
"validators",
e.schema.get("error"),
self.controller.users.get_user_lang_by_id(auth_data[4]["user_id"]),
)} {offending_key}"""
return self.finish_json( return self.finish_json(
400, 400,
{ {
"status": "error", "status": "error",
"error": "INVALID_JSON_SCHEMA", "error": "INVALID_JSON_SCHEMA",
"error_data": str(e), "error_data": f"{str(err)}",
}, },
) )

View File

@ -668,6 +668,10 @@
"uses": "Number of uses allowed (-1==No Limit)" "uses": "Number of uses allowed (-1==No Limit)"
}, },
"validators": { "validators": {
"typeBool": "Type error: True or False required for ",
"typeInteger": "Type error: Integer required for ",
"typeList": "Type error: List required for ",
"typeString": "Type error: String required for ",
"passLength": "Password Too Short. Minimum Length: 8" "passLength": "Password Too Short. Minimum Length: 8"
}, },
"webhooks": { "webhooks": {