mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-30 02:44:06 +00:00
90 lines
2.0 KiB
JavaScript
90 lines
2.0 KiB
JavaScript
import lodash from 'lodash'
|
|
import Base from './Base.js'
|
|
import { Data } from '../components/index.js'
|
|
|
|
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
|
|
this.diyCfg = diyCfg[this.cfgKey] || {}
|
|
this.sysCfg = sysCfg[this.cfgKey] || {}
|
|
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 || {}
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
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], {})
|
|
}
|
|
}
|
|
|
|
ProfileServ.getServ = function ({ uid, serv }) {
|
|
return (diyCfg.getProfileServ || sysCfg.getProfileServ)({ uid, serv, diyCfg })
|
|
}
|