Newer
Older
taehui / taehui-www / src / mws / avatar.ts
@Taehui Taehui on 13 Mar 986 bytes v1.0.0
import { Middleware } from "koa";
import dayjs from "dayjs";
import { getDatetime } from "taehui-ts/date";

import DB from "src/system/DB";

export const validateTotem: Middleware = async (ctx, next) => {
  const {
    headers: { totem },
  } = ctx;

  const totemText = totem as string;

  const data = await DB.ta(async (db) => {
    const data = await DB.getAvatarAsTotem(db, totemText);

    if (data) {
      const datetime = getDatetime();
      if (dayjs(data.date).add(1, "hour").isAfter(datetime)) {
        await DB.setTotemDate(db, totemText, datetime);
        return DB.getAvatarAsAvatarID(db, data.avatarID);
      } else {
        await DB.wipeTotem(db, totemText);
      }
    }
  });

  if (data) {
    ctx.headers.avatarID = data.avatarID;
    ctx.headers.avatarName = data.avatarName;
    ctx.headers.level = String(data.level);
    ctx.headers.fax = data.fax;
    ctx.headers.avatarIntro = data.avatarIntro;
    await next();
  } else {
    ctx.status = 401;
  }
};