import dotenv from "dotenv"; | |
dotenv.config(); | |
import express from "express"; | |
import cors from "cors"; | |
import pinoHttp from "pino-http"; | |
import { logger } from "./logger"; | |
import { keys } from "./keys"; | |
import { proxyRouter } from "./proxy/routes"; | |
import { handleInfoPage } from "./info-page"; | |
const PORT = process.env.PORT || 7860; | |
const app = express(); | |
// middleware | |
app.use(pinoHttp({ logger })); | |
app.use(cors()); | |
app.use( | |
express.json({ limit: "10mb" }), | |
express.urlencoded({ extended: true, limit: "10mb" }) | |
); | |
// routes | |
app.get("/", handleInfoPage); | |
app.use("/proxy", proxyRouter); | |
// 500 and 404 | |
app.use((err: any, _req: unknown, res: express.Response, _next: unknown) => { | |
if (err.status) { | |
res.status(err.status).json({ error: err.message }); | |
} else { | |
logger.error(err); | |
res.status(500).json({ error: "Internal server error" }); | |
} | |
}); | |
app.use((_req: unknown, res: express.Response) => { | |
res.status(404).json({ error: "Not found" }); | |
}); | |
// start server and load keys | |
app.listen(PORT, () => { | |
logger.info(`Server listening on port ${PORT}`); | |
keys.init(); | |
}); | |