forked from mrabit/aliyundriveDailyCheck
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqlApi.js
166 lines (157 loc) · 3.5 KB
/
qlApi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*
* @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