Newer
Older
taehui / taehui-fe / src / app / www / systems / file.ts
@Taehui Taehui on 17 Mar 1 KB 2024-03-17 오후 11:29
import DB from "@/app/www/system/DB";
import { ESSAY_ENTRY_PATH } from "@/app/www/utilities/Path";
import { isBannedIP } from "@/app/www/utilities/Utility";
import { readFile } from "node:fs/promises";
import { join } from "path";
import { getDate } from "taehui-ts/date";

export const getFile = async (fileName: string, avatarIP: string) => {
  return (
    await Promise.all([
      isBannedIP(avatarIP) ||
      fileName.match(/^.*\.(bmp|gif|jpeg|jpg|png|webp)$/i) ||
      fileName.match(
        /^.*\.(aif|aiff|asf|flac|m4a|mid|midi|mp2|mp3|ogg|opus|raw|wav|wma)$/i,
      ) ||
      fileName.match(/^.*\.(avi|flv|m1v|mkv|mov|mp4|mpeg|mpg|webm|wmv)$/i)
        ? Promise.resolve()
        : DB.postFileHit(fileName, avatarIP, getDate()),
      readFile(join(ESSAY_ENTRY_PATH, fileName)),
    ])
  )[1];
};

export const getPostedFileName = async (fileName: string) => {
  return await DB.getPostedFileName(fileName);
};

export const getFileHit = async (fileName: string) => {
  return await DB.getFileHit(fileName);
};