$statusCode ]; if (isset($data['error'])) { $response['error'] = $data['error']; } else if (isset($data['url'])) { $response['url'] = $data['url']; } echo json_encode($response); exit; } // Validação básica da URL if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) { sendResponse([ 'error' => [ 'code' => 'INVALID_URL', 'message' => MESSAGES['INVALID_URL']['message'] ] ], 400); } try { // Instancia o analisador de URLs $analyzer = new URLAnalyzer(); // Tenta analisar a URL fornecida $analyzer->analyze($url); // Se a análise for bem-sucedida, retorna a URL processada sendResponse([ 'url' => SITE_URL . '/p/' . $url ], 200); } catch (Exception $e) { // Tratamento de erros com mapeamento para códigos HTTP apropriados $message = $e->getMessage(); $statusCode = 400; $errorCode = 'GENERIC_ERROR'; // Mapeia a mensagem de erro para o código e status apropriados foreach (MESSAGES as $key => $value) { if (strpos($message, $value['message']) !== false) { $statusCode = ($value['type'] === 'error') ? 400 : 503; $errorCode = $key; break; } } // Adiciona header de erro para melhor tratamento no cliente header('X-Error-Message: ' . $message); sendResponse([ 'error' => [ 'code' => $errorCode, 'message' => $message ] ], $statusCode); } } else { // Retorna erro 404 para endpoints não encontrados sendResponse([ 'error' => [ 'code' => 'NOT_FOUND', 'message' => MESSAGES['NOT_FOUND']['message'] ] ], 404); }