41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import { Hono } from "npm:hono"
|
|
import { logger } from "npm:hono/logger"
|
|
import { compress } from "npm:hono/compress"
|
|
import { secureHeaders } from "npm:hono/secure-headers"
|
|
import { SearchQuery } from "./helpers/types.ts"
|
|
import Search from "./helpers/search.ts"
|
|
|
|
const app = new Hono()
|
|
|
|
export const customLogger = (message: string, ...rest: string[]) => {
|
|
console.log(message, ...rest)
|
|
}
|
|
|
|
app.use("*", secureHeaders())
|
|
app.use("*", logger(customLogger))
|
|
app.use("*", compress())
|
|
|
|
app.onError((err, c) => {
|
|
console.error(err)
|
|
return c.json({ error: err.message }, 500)
|
|
})
|
|
|
|
app.get("/favicon.ico", (c) => c.body(null, 204))
|
|
|
|
// Politely tell robots to go away
|
|
app.get("/robots.txt", (c) => c.text("User-agent: *\nDisallow: /"))
|
|
|
|
app.all("/", (c) => {
|
|
const query: SearchQuery = {
|
|
site: c.req.query("booru") ?? "safebooru",
|
|
tags: c.req.query("tags") ?? c.req.header("Host") === "rint.osaka"
|
|
? "tohsaka_rin"
|
|
: "",
|
|
}
|
|
customLogger(`Host: ${c.req.header("Host")}`)
|
|
|
|
return Search(c, query)
|
|
})
|
|
|
|
Deno.serve(app.fetch)
|