const API = require("../../lib/API") const AccessControl = require("../../lib/AccessControl") const { BaseStdResponse } = require("../../BaseStdResponse") const db = require("../../plugin/DataBase/db") const axios = require('axios') const { core_url } = require('../../config.json') class GetRepoStatus extends API { constructor() { super() this.setMethod("GET") this.setPath("/Repos/Status") } async onRequest(req, res) { let { uuid, session, id } = req.query if ([uuid, session, id].some(value => value === '' || value === null || value === undefined)) return res.json({ ...BaseStdResponse.MISSING_PARAMETER }) // 检查 session if (!await AccessControl.checkSession(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED }) let sql = 'SELECT state, path, url FROM repos WHERE create_user = ? AND id = ?' let r = await db.query(sql, [uuid, id]) if (!r || r.length === 0) return res.json({ ...BaseStdResponse.ERR, msg: '未找到仓库' }) if (r[0].state !== 1 || !r[0].path) return res.json({ ...BaseStdResponse.ERR, msg: '仓库未成功克隆!' }) try { const clone_url = core_url + '/git/status' const response = await axios.post(clone_url, { uuid, repo_url: r[0].url }) if (!response || !response.data) return res.json({ ...BaseStdResponse.ERR, msg: '获取仓库状态失败!' }) res.json({ ...BaseStdResponse.OK, data: response.data }) } catch (error) { this.logger.error('获取仓库状态失败!' + error.stack) } } } module.exports.GetRepoStatus = GetRepoStatus