AniX/api-prox/shared.ts

104 lines
3 KiB
TypeScript

export const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET,HEAD,POST,OPTIONS",
"Cache-Control": "no-cache",
};
export const resHeaders = {
...corsHeaders,
"Content-Type": "application/json",
};
export function asJSON(res, object: any, status: number) {
res.status(status);
res.set(resHeaders);
res.send(JSON.stringify(object));
}
export const ANIXART_UA =
"AnixartApp/9.0 BETA 5-25062213 (Android 9; SDK 28; arm64-v8a; samsung SM-G975N; en)";
export const ANIXART_API = "https://api.anixart.app";
export const ANIXART_HEADERS = {
"User-Agent": ANIXART_UA,
"Content-Type": "application/json; charset=UTF-8",
};
type LogLevel = "debug" | "info" | "warn" | "error" | "disable";
export class Log {
level: LogLevel;
levelInt = {
debug: 0,
info: 1,
warn: 2,
error: 3,
disable: 4,
};
constructor(level: LogLevel = "info") {
this.level = level;
}
getString(...args: string[]): string {
return args.toString();
}
getTime(): string {
const datetime = new Date();
return `${datetime.getHours().toString().padStart(2, "0")}:${datetime.getMinutes().toString().padStart(2, "0")}:${datetime.getSeconds().toString().padStart(2, "0")}`;
}
console(logLevel: LogLevel = "info", ...msg: any[]) {
if (this.levelInt[this.level] <= this.levelInt[logLevel])
console.log(`[${logLevel.toUpperCase()}](${this.getTime()}) -> `, ...msg);
}
debug(...msg: string[]) {
if (this.levelInt[this.level] <= 0)
console.log(`[DEBUG](${this.getTime()}) -> ${this.getString(...msg)}`);
}
info(...msg: string[]) {
if (this.levelInt[this.level] <= 1)
console.log(`[INFO](${this.getTime()}) -> ${this.getString(...msg)}`);
}
warn(...msg: string[]) {
if (this.levelInt[this.level] <= 2)
console.log(`[WARN](${this.getTime()}) -> ${this.getString(...msg)}`);
}
error(...msg: string[]) {
if (this.levelInt[this.level] <= 3)
console.log(`[ERROR](${this.getTime()}) -> ${this.getString(...msg)}`);
}
consoleHook(logLevel: LogLevel = "info", ...msg: any[]) {
if (this.levelInt[this.level] <= this.levelInt[logLevel])
console.log(
`[${logLevel.toUpperCase()}|HOOK](${this.getTime()}) -> `,
...msg
);
}
debugHook(...msg: string[]) {
if (this.levelInt[this.level] <= 0)
console.log(
`[DEBUG|HOOK](${this.getTime()}) -> ${this.getString(...msg)}`
);
}
infoHook(...msg: string[]) {
if (this.levelInt[this.level] <= 1)
console.log(
`[INFO|HOOK](${this.getTime()}) -> ${this.getString(...msg)}`
);
}
warnHook(...msg: string[]) {
if (this.levelInt[this.level] <= 2)
console.log(
`[WARN|HOOK](${this.getTime()}) -> ${this.getString(...msg)}`
);
}
errorHook(...msg: string[]) {
if (this.levelInt[this.level] <= 3)
console.log(
`[ERROR|HOOK](${this.getTime()}) -> ${this.getString(...msg)}`
);
}
}
export const logger = new Log((process.env.LOG_LEVEL as LogLevel) || "info");