From 357a557caa6c2a2cb29a314dd5fe3b415c002230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BA=BB=E6=9D=A1=E5=84=BF?= <62429874+matiaoer@users.noreply.github.com> Date: Mon, 6 Jan 2025 02:29:17 +0800 Subject: [PATCH] Create qlApi.js --- qlApi.js | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 qlApi.js diff --git a/qlApi.js b/qlApi.js new file mode 100644 index 0000000..8c148e8 --- /dev/null +++ b/qlApi.js @@ -0,0 +1,167 @@ +/* + * @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_PATH = process.env.QL_PATH?process.env.QL_PATH:'' +const QL_URL = `http://127.0.0.1:5700${QL_PATH}` +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