faker3/function/qlApi.js
2024-06-28 15:38:28 +08:00

167 lines
3.5 KiB
JavaScript

/*
* @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