40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import EventCallbackFunction from "../typedef/EventCallbackFunction.ts"
|
|
import ApiManager from "./ApiManager.ts"
|
|
import { CallMethod } from './ApiDeclare.ts'
|
|
import User from "../data/User.ts"
|
|
import Token from "./Token.ts"
|
|
|
|
export default abstract class BaseApi {
|
|
abstract getName(): string
|
|
constructor() {
|
|
this.onInit()
|
|
}
|
|
abstract onInit(): void
|
|
checkArgsMissing(args: { [key: string]: unknown }, names: string[]) {
|
|
for (const k of names)
|
|
if (!(k in args))
|
|
return true
|
|
return false
|
|
}
|
|
checkArgsEmpty(args: { [key: string]: unknown }, names: string[]) {
|
|
for (const k of names)
|
|
if (k in args && args[k] == '')
|
|
return true
|
|
return false
|
|
}
|
|
checkUserToken(user: User, token: Token) {
|
|
if (!this.checkToken(token)) return false
|
|
if (token.author != user.bean.id) return false
|
|
return true
|
|
}
|
|
checkToken(token: Token) {
|
|
if (token.expired_time < Date.now()) return false
|
|
if (!User.findById(token.author)) return false
|
|
return true
|
|
}
|
|
registerEvent(name: CallMethod, func: EventCallbackFunction) {
|
|
if (!name.startsWith(this.getName() + ".")) throw Error("注冊的事件應該與接口集合命名空間相匹配: " + name)
|
|
ApiManager.addEventListener(name, func)
|
|
}
|
|
}
|