(filename)
| 1676 | } |
| 1677 | |
| 1678 | async function testCredential(filename) { |
| 1679 | try { |
| 1680 | // 显示加载状态 |
| 1681 | showStatus('🧪 正在测试凭证,请稍候...', 'info'); |
| 1682 | |
| 1683 | const response = await fetch(`./creds/test/${encodeURIComponent(filename)}`, { |
| 1684 | method: 'POST', |
| 1685 | headers: getAuthHeaders() |
| 1686 | }); |
| 1687 | |
| 1688 | // 解析JSON响应 |
| 1689 | const data = await response.json(); |
| 1690 | |
| 1691 | if (response.status === 200) { |
| 1692 | // 凭证可用 |
| 1693 | const successMsg = `✅ 测试成功!\n文件: ${filename}\n状态: ${data.message || '凭证可用'} (${data.status_code || 200})`; |
| 1694 | showStatus('✅ 测试成功!', 'success'); |
| 1695 | showMessageModal('测试成功', successMsg, 'success'); |
| 1696 | await AppState.creds.refresh(); |
| 1697 | } |
| 1698 | else { |
| 1699 | // 其他错误 - 显示完整错误信息 |
| 1700 | let errorDetails = `❌ 测试失败\n文件: ${filename}\n`; |
| 1701 | |
| 1702 | // 如果有完整的错误响应,添加到详情中 |
| 1703 | if (data.error) { |
| 1704 | try { |
| 1705 | // 尝试格式化JSON错误 |
| 1706 | const errorObj = JSON.parse(data.error); |
| 1707 | errorDetails += `\n错误详情:\n${JSON.stringify(errorObj, null, 2)}`; |
| 1708 | } catch { |
| 1709 | // 如果不是JSON,直接显示文本 |
| 1710 | errorDetails += `\n错误详情:\n${data.error}`; |
| 1711 | } |
| 1712 | } else { |
| 1713 | errorDetails += `错误码: ${data.status_code || response.status}`; |
| 1714 | } |
| 1715 | |
| 1716 | showStatus(`❌ 测试失败 - ${data.message || '错误码: ' + (data.status_code || response.status)}`, 'error'); |
| 1717 | showMessageModal('测试失败', errorDetails, 'error'); |
| 1718 | } |
| 1719 | } catch (error) { |
| 1720 | const errorMsg = `测试失败: ${error.message}`; |
| 1721 | showStatus(`❌ ${errorMsg}`, 'error'); |
| 1722 | showMessageModal('测试失败', `❌ ${errorMsg}`, 'error'); |
| 1723 | } |
| 1724 | } |
| 1725 | |
| 1726 | async function testAntigravityCredential(filename) { |
| 1727 | try { |
nothing calls this directly
no test coverage detected