45 lines
1.1 KiB
TypeScript

import type { Context } from "hono";
import type { GetFilesSchema } from "./schema";
import fs from "node:fs/promises";
import { filesDirList, getFilePath } from "./utils";
export const getFiles = async (c: Context) => {
const input: GetFilesSchema = c.req.query();
const { baseName, path, pathname } = getFilePath(input.path);
if (!baseName?.length) {
return c.json(
filesDirList.map((i) => ({
name: i.name,
path: "/" + i.name,
isDirectory: true,
}))
);
}
try {
const entities = await fs.readdir(path, { withFileTypes: true });
const files = entities
.filter((e) => !e.name.startsWith("."))
.map((e) => ({
name: e.name,
path: [pathname, e.name].join("/"),
isDirectory: e.isDirectory(),
}))
.sort((a, b) => {
if (a.isDirectory && !b.isDirectory) {
return -1;
} else if (!a.isDirectory && b.isDirectory) {
return 1;
} else {
return a.name.localeCompare(b.name);
}
});
return c.json(files);
} catch (err) {}
return c.json([]);
};