/* * @Author: chenghao * @Date: 2022-02-14 10:19:21 * @Last Modified by: chenghao * @Last Modified time: 2022-03-20 13:57:10 * @Desc: 青龙依赖 * @From: https://github.com/whyour/qinglong/issues/1369 */ const axios = require('axios') const QL_URL = 'http://127.0.0.1:5700' const CLIENT_ID = process.env.CLIENT_ID const CLIENT_SECRET = process.env.CLIENT_SECRET /** *获取青龙token */ function getQLToken() { return new Promise((resolve, reject) => { axios .get( QL_URL + `/open/auth/token?client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}` ) .then(res => { if (res.data.code === 200) { resolve(res.data.data.token) } else { reject(res.data.message) } }) }) } /** *构造请求头 * @returns headers */ async function generateRequestHeader() { return new Promise(async resolve => { const token = await getQLToken() resolve({ Authorization: 'Bearer ' + token, 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4577.63 Safari/537.36', 'Content-Type': 'application/json;charset=UTF-8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9' }) }) } /** *初始化请求实例 * @returns axios instance */ async function init() { if (!CLIENT_ID || !CLIENT_SECRET) return Promise.reject('未获取到 CLIENT_ID 或 CLIENT_SECRET') const headers = await generateRequestHeader() return new Promise(resolve => { resolve( axios.create({ baseURL: QL_URL, timeout: 10000, headers }) ) }) } /** * *获取青龙环境变量 * @param {*} instance * @returns [] envlist */ function getQLEnvs(instance, searchValue = 'JD_COOKIE') { return new Promise(resolve => { instance .get('/open/envs', { params: { searchValue, t: +new Date() } }) .then(res => { resolve(res.data.data.filter(v => v.status === 0)) }) }) } /** *创建ck环境变量 * @param {*} instance * @param {*} [ck=[]] * @returns */ function createCkEnv(instance, ck = []) { return new Promise(resolve => { instance .post(`/open/envs?t=${+new Date()}`, ck) .then(res => { resolve(res.data) }) .catch(error => { console.log(error.response.data) }) }) } /** * 更新环境变量 * @param {*} instance * @param {*} ck * @returns */ function updateCkEnv(instance, ck = {}) { return new Promise(resolve => { instance .put(`/open/envs?t=${+new Date()}`, ck) .then(res => { resolve(res.data) }) .catch(error => { console.log(error.response.data) }) }) } /** * 删除环境变量 * @param {*} instance * @param {*} ckIds * @returns */ function deleteCkEnv(instance, ckIds = []) { return new Promise(resolve => { instance({ method: 'delete', url: `/open/envs?t=${+new Date()}`, data: ckIds }).then(resolve) }) } /** *切换ck状态 * @param {*} instance * @param {*} path * @param {*} id * @returns */ function toggleCKEnv(instance, id, path = 'enable') { return new Promise(resolve => { instance.put(`/open/envs/${path}?t=${+new Date()}`, [id]).then(res => { resolve(res.data) }) }) } exports.createEnv = createCkEnv exports.deleteEnv = deleteCkEnv exports.getEnv = getQLEnvs exports.initInstance = init exports.updateCkEnv = updateCkEnv exports.toggleCKEnv = toggleCKEnv