req.url = PROXY_URL + '/' + originalRequestUrl; console.log('🔀 Request via proxy (execução real):', req.url); // Adicionar metadado para o Swagger exibir a URL correta req.curlUrl = originalRequestUrl; } return req; }, responseInterceptor: (res) => { console.log('📥 Response:', res.status, res.statusText); // Tentar corrigir o cURL exibido na UI setTimeout(() => { if (originalRequestUrl) { // Procurar e substituir URLs no DOM const curlElements = document.querySelectorAll('.curl-command, .request-url, code, pre'); curlElements.forEach(el => { // Verificar ambos os formatos: localhost e produção const hasProxyUrl = el.textContent.includes('localhost:8081/https://') || el.textContent.includes('swagger-proxy.cwmkt.com.br/https://'); if (hasProxyUrl) { // Preservar a formatação original ao substituir apenas a URL let newText = el.textContent .replace(/http:\/\/localhost:8081\/(https?:\/\/[^\s'"\\]+)/g, '$1') .replace(/https:\/\/swagger-proxy\.cwmkt\.com\.br\/(https?:\/\/[^\s'"\\]+)/g, '$1'); if (newText !== el.textContent) { // Usar innerHTML se disponível para preservar formatação if (el.innerHTML && hasProxyUrl) { el.innerHTML = el.innerHTML .replace(/http:\/\/localhost:8081\/(https?:\/\/[^\s'"<>]+)/g, '$1') .replace(/https:\/\/swagger-proxy\.cwmkt\.com\.br\/(https?:\/\/[^\s'"<>]+)/g, '$1'); } else { el.textContent = newText; } console.log('🔧 cURL corrigido na UI'); } } }); } }, 500); return res; }, // Configurar valores padrão onComplete: () => { console.log('✅ Swagger UI carregado com sucesso!'); if (USE_PROXY) { console.log('🔧 Modo PROXY ativado - Requisições passarão por ' + PROXY_URL); console.log('📋 O cURL exibido será automaticamente limpo para mostrar a URL pública'); if (!IS_PRODUCTION) { console.log('⚠️ Certifique-se que o proxy está rodando: python proxy-server.py'); } } else { console.log('⚠️ Modo DIRETO - Pode haver erros de CORS!'); } // Observer para corrigir cURL dinamicamente const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { mutation.addedNodes.forEach((node) => { if (node.nodeType === 1) { const elements = node.querySelectorAll ? node.querySelectorAll('.curl-command, .request-url, code, pre') : []; elements.forEach(el => { const hasProxyUrl = el.textContent.includes('localhost:8081/https://') || el.textContent.includes('swagger-proxy.cwmkt.com.br/https://'); if (hasProxyUrl) { // Preservar formatação ao limpar URL if (el.innerHTML && hasProxyUrl) { el.innerHTML = el.innerHTML .replace(/http:\/\/localhost:8081\/(https?:\/\/[^\s'"<>]+)/g, '$1') .replace(/https:\/\/swagger-proxy\.cwmkt\.com\.br\/(https?:\/\/[^\s'"<>]+)/g, '$1'); } else { el.textContent = el.textContent .replace(/http:\/\/localhost:8081\/(https?:\/\/[^\s'"\\]+)/g, '$1') .replace(/https:\/\/swagger-proxy\.cwmkt\.com\.br\/(https?:\/\/[^\s'"\\]+)/g, '$1'); } } }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); console.log('👁️ Observer ativo para limpar URLs do proxy no cURL'); } }); }) .catch(error => { console.error('Erro ao carregar o arquivo YAML:', error); document.getElementById('swagger-ui').innerHTML = '
' + '

Erro ao carregar a documentação

' + '

Certifique-se de que o arquivo "cwmkt-funnels-api-swagger.yaml" está na mesma pasta que este HTML.

' + '

Detalhes do erro: ' + error.message + '

' + '
'; });