miao-plugin/models/ProfileServ.js

97 lines
2.2 KiB
JavaScript
Raw Normal View History

2022-08-18 10:13:42 +00:00
import lodash from 'lodash'
import Base from './Base.js'
import { Data, Cfg } from '../components/index.js'
2022-08-18 10:13:42 +00:00
let { sysCfg, diyCfg } = await Data.importCfg('profile')
export default class ProfileServ extends Base {
constructor (cfg) {
super()
this._name = cfg.name
this.cfgKey = cfg.cfgKey || cfg.id
2022-08-19 01:50:17 +00:00
this.diyCfg = diyCfg[this.cfgKey] || {}
this.sysCfg = sysCfg[this.cfgKey] || {}
2022-08-18 10:13:42 +00:00
this._cfg = cfg
}
get name () {
let url = this.getCfg('url')
return this._name || url.replace('https://', '').replace('/', '').trim()
}
// 获取当前面板服务配置
getCfg (key, def = '') {
if (!lodash.isUndefined(this.diyCfg[key])) {
return this.diyCfg[key]
}
if (!lodash.isUndefined(this.sysCfg[key])) {
return this.sysCfg[key]
}
return def
}
// 请求当前面板服务
async getReqParam (uid) {
let url = this.getCfg('url')
let profileApi = this.getCfg('listApi')
let cfg = this._cfg
let api = profileApi({
url,
uid: uid,
diyCfg: this.diyCfg
})
let param = {}
// 获取请求参数
if (cfg.request) {
param = await cfg.request.call(this, api)
}
return {
url: param.api || api,
params: param.params || {}
2022-08-18 10:13:42 +00:00
}
}
async response (data, req) {
// 处理返回
let cfg = this._cfg
if (cfg.response) {
return await cfg.response.call(this, data, req)
}
}
execFn (fn, args = [], def = false) {
let { _cfg } = this
if (_cfg[fn]) {
return _cfg[fn].apply(this, args)
}
return def
}
2022-08-18 10:13:42 +00:00
getCdTime (data) {
const requestInterval = diyCfg.requestInterval || sysCfg.requestInterval || 5
let cdTime = requestInterval * 60
return Math.max(cdTime, this.execFn('cdTime', [data], 60))
}
getUserData (data) {
return this.execFn('userData', [data], {})
}
getProfileData (data) {
return this.execFn('profileData', [data], {})
2022-08-18 10:13:42 +00:00
}
}
ProfileServ.getServ = function ({ uid, serv }) {
let { Miao, Enka } = serv
let token = diyCfg?.miaoApi?.token
let qq = diyCfg?.miaoApi?.qq
if (qq && token && token.length === 32 && !/^test/.test(token) && Cfg.get('profileServ') === 1) {
return Miao
}
return Enka
2022-08-18 10:13:42 +00:00
}