| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import express from "npm:express";
- import {
- getRelayBalanceStatus,
- getStoredRelayAuth,
- isUsableAuth,
- queryRelayBalance,
- redactSecrets,
- saveStoredRelayCredential,
- toAuthorization
- } from "../../src/relay/relay-runtime.js";
- const router = express.Router();
- router.get("/token", async (_req, res) => {
- try {
- const auth = await getStoredRelayAuth();
- if (!isUsableAuth(auth)) {
- return res.status(409).json({ success: false, message: "尚未配置 API 密钥" });
- }
- res.json({ success: true, data: { authorization: auth } });
- } catch (error) {
- res.status(500).json({ success: false, message: redactSecrets(error?.message || "获取密钥失败") });
- }
- });
- router.get("/status", async (_req, res) => {
- try {
- const data = await getRelayBalanceStatus();
- res.json({ success: true, data });
- } catch (error) {
- res.status(500).json({ success: false, message: redactSecrets(error?.message || "状态查询失败") });
- }
- });
- router.post("/status/refresh", async (_req, res) => {
- try {
- const data = await getRelayBalanceStatus();
- res.json({ success: true, data });
- } catch (error) {
- res.status(500).json({ success: false, message: redactSecrets(error?.message || "状态查询失败") });
- }
- });
- router.post("/credential", async (req, res) => {
- try {
- const raw = String(req.body?.apiKey || req.body?.key || "").trim();
- const auth = toAuthorization(raw);
- await queryRelayBalance(auth);
- const saved = await saveStoredRelayCredential(raw, req.currentUser?.get?.("username") || req.currentUser?.id || "");
- const data = await getRelayBalanceStatus();
- res.json({ success: true, data: { ...data, maskedKey: saved.maskedKey } });
- } catch (error) {
- res.status(400).json({ success: false, message: redactSecrets(error?.message || "密钥保存失败") });
- }
- });
- router.get("/health", async (_req, res) => {
- const auth = await getStoredRelayAuth();
- res.json({ service: "relay-credential", configured: Boolean(auth), timestamp: new Date().toISOString() });
- });
- export default router;
|