62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { Elysia, file } from "elysia";
|
|
import { getBindingInfo, logStartup } from "./startMessage";
|
|
import { pingHandler } from "@elysia/routes/ping";
|
|
import openapi from "@elysiajs/openapi";
|
|
import { cors } from "@elysiajs/cors";
|
|
import { songInfoHandler } from "@elysia/routes/song/info";
|
|
import { rootHandler } from "@elysia/routes/root";
|
|
import { getVideoMetadataHandler } from "@elysia/routes/video/metadata";
|
|
import { closeMileStoneHandler } from "@elysia/routes/song/milestone";
|
|
import { authHandler } from "@elysia/routes/auth";
|
|
import { onAfterHandler } from "./onAfterHandle";
|
|
import { searchHandler } from "@elysia/routes/search";
|
|
import { getVideoSnapshotsHandler } from "@elysia/routes/video/snapshots";
|
|
import { addSongHandler } from "@elysia/routes/song/add";
|
|
import { deleteSongHandler } from "@elysia/routes/song/delete";
|
|
import { songEtaHandler } from "@elysia/routes/video/eta";
|
|
import "./mq";
|
|
|
|
const [host, port] = getBindingInfo();
|
|
logStartup(host, port);
|
|
|
|
const app = new Elysia({
|
|
serve: {
|
|
hostname: host
|
|
}
|
|
})
|
|
.onError(({ code, status, error }) => {
|
|
if (code === "NOT_FOUND")
|
|
return status(404, {
|
|
message: "The requested resource was not found."
|
|
});
|
|
if (code === "VALIDATION") return error.detail(error.message);
|
|
return error;
|
|
})
|
|
.use(onAfterHandler)
|
|
.use(cors())
|
|
.use(openapi())
|
|
.use(rootHandler)
|
|
.use(pingHandler)
|
|
.use(authHandler)
|
|
.use(getVideoMetadataHandler)
|
|
.use(songInfoHandler)
|
|
.use(closeMileStoneHandler)
|
|
.use(searchHandler)
|
|
.use(getVideoSnapshotsHandler)
|
|
.use(addSongHandler)
|
|
.use(deleteSongHandler)
|
|
.use(songEtaHandler)
|
|
.get("/a", () => file("public/background.jpg"))
|
|
.get("/song/:id", ({ redirect, params }) => {
|
|
console.log(`/song/${params.id}/info`);
|
|
return redirect(`/song/${params.id}/info`, 302);
|
|
})
|
|
.get("/video/:id", ({ redirect, params }) => {
|
|
return redirect(`/video/${params.id}/info`, 302);
|
|
})
|
|
.listen(15412);
|
|
|
|
export const VERSION = "0.7.0";
|
|
|
|
export type App = typeof app;
|