21 lines
2.5 KiB
JSON
21 lines
2.5 KiB
JSON
[
|
|
{
|
|
"task_id": 1,
|
|
"text": "Crea una API de validación y transformación de datos de usuarios que procese una lista de emails desde parámetros de consulta, valide cada email con expresión regular, transforme nombres de usuarios eliminando espacios, y genere un reporte con estadísticas de emails válidos/inválidos. La API debe manejar errores y devolver código de estado HTTP apropiado.",
|
|
"code": "addParam('user_list', user_data)\ngetQueryParamList('emails', email_list)\naddVar(valid_count, 0)\naddVar(invalid_count, 0)\naddVar(processed_emails, [])\ntry()\n getListLen(email_list, total_emails)\n if(total_emails, 0, \">\")\n addVar(i, 0)\n startLoop(counter, 0, total_emails)\n itemFromList(email_list, i, current_email)\n getRegex(current_email, \"^[\\\\w\\\\.-]+@[\\\\w\\\\.-]+\\\\.[a-zA-Z]{2,}$\", email_match)\n if(None, None, `email_match != None`)\n addVar(valid_count, valid_count + 1)\n replace(current_email, \" \", \"\", clean_email)\n variableToList(clean_email, temp_list)\n AddVariableToJSON(\"email\", clean_email, email_obj)\n AddVariableToJSON(\"status\", \"valid\", email_obj)\n else()\n addVar(invalid_count, invalid_count + 1)\n AddVariableToJSON(\"email\", current_email, email_obj)\n AddVariableToJSON(\"status\", \"invalid\", email_obj)\n end()\n addVar(i, i + 1)\n endLoop()\n AddVariableToJSON(\"total_processed\", total_emails, report)\n AddVariableToJSON(\"valid_emails\", valid_count, report)\n AddVariableToJSON(\"invalid_emails\", invalid_count, report)\n if(valid_count, 0, \">\")\n addVar(_status, 200)\n else()\n addVar(_status, 422)\n end()\n else()\n AddVariableToJSON(\"error\", \"No emails provided\", report)\n addVar(_status, 400)\n end()\nexception(error_var)\n AddVariableToJSON(\"error\", \"Processing failed\", report)\n addVar(_status, 500)\nend()\naddResult(report)",
|
|
"test_inputs": {
|
|
"emails": [
|
|
"user1@domain.com",
|
|
"invalid-email",
|
|
"test@example.org",
|
|
"bad@",
|
|
"admin@site.co.uk"
|
|
]
|
|
},
|
|
"test_list": [
|
|
"re.match(r'\\d+', str(report.get('total_processed', '')))",
|
|
"re.match(r'[2-5]\\d\\d', str(_status))",
|
|
"re.match(r'(valid|invalid)', str(report.get('error', '') or 'valid'))"
|
|
]
|
|
}
|
|
] |