118 lines
3.1 KiB
TypeScript
118 lines
3.1 KiB
TypeScript
import { Hono } from "hono";
|
|
import { ApiResponse } from "./modules/api_response";
|
|
import { validator } from "hono/validator";
|
|
import { postUser } from "./service/postUser";
|
|
import { isEmpty } from "./utils/is_empty";
|
|
import { getUser } from "./service/getUser";
|
|
import { bodyLimit } from "hono/body-limit";
|
|
import { getRandom } from "./service/getRandom";
|
|
import { responseStr } from "./const/response_str";
|
|
|
|
const tmpApp: Hono = new Hono()
|
|
export const app = tmpApp.basePath("/test/")
|
|
|
|
app.get("/user", (c) => {
|
|
const re = getUser()
|
|
return c.json(ApiResponse.success(200, responseStr.USER_GET_SUCCESS, re))
|
|
})
|
|
|
|
app.post(
|
|
"/user",
|
|
validator("json", (val, c) => {
|
|
if (isEmpty(val.name, val.passwd)) {
|
|
c.status(400)
|
|
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
|
|
}
|
|
return val
|
|
}),
|
|
c => {
|
|
const re = postUser()
|
|
return c.json(ApiResponse.success(200, responseStr.USER_ADD_SUCCESS, re))
|
|
}
|
|
)
|
|
|
|
app.patch("/user",
|
|
validator("json", (val, c) => {
|
|
if (isEmpty(val.id, val.changeFields)) {
|
|
c.status(400)
|
|
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
|
|
}
|
|
return val
|
|
}),
|
|
c => {
|
|
return c.json(ApiResponse.success(200, responseStr.USER_MOD_SUCCESS))
|
|
}
|
|
)
|
|
|
|
app.put("/user",
|
|
validator("json", (val, c) => {
|
|
if (isEmpty(val.id, val.changeFields)) {
|
|
c.status(400)
|
|
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
|
|
}
|
|
return val
|
|
}),
|
|
c => {
|
|
return c.json(ApiResponse.success(200, responseStr.USER_MOD_SUCCESS))
|
|
}
|
|
)
|
|
|
|
app.delete("/user",
|
|
validator("json", (val, c) => {
|
|
if (isEmpty(val.id)) {
|
|
c.status(400)
|
|
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
|
|
}
|
|
return val
|
|
}),
|
|
async (c) => {
|
|
const id = await c.req.json()
|
|
return c.json(ApiResponse.success(200, responseStr.USER_DEL_SUCCESS))
|
|
}
|
|
)
|
|
|
|
app.post("/file",
|
|
bodyLimit({
|
|
maxSize: 5 * 1024 * 1024,
|
|
onError: (c) => {
|
|
return c.json(ApiResponse.err(400, responseStr.FILE_SIZE_LIMIT_5M))
|
|
}
|
|
}),
|
|
async (c) => {
|
|
const body = await c.req.parseBody()
|
|
const file = body["file"]
|
|
if (!(file instanceof File)) {
|
|
return c.json(ApiResponse.err(400, responseStr.FILE_TYPE_INVALID))
|
|
}
|
|
|
|
const fileName = file.name
|
|
const fileSize = file.size
|
|
return c.json(ApiResponse.success(200, responseStr.FILE_UPLOAD_SUCCESS, {
|
|
fileName,
|
|
fileSize
|
|
}))
|
|
}
|
|
)
|
|
|
|
app.get("/random",
|
|
validator("query", (val, c) => {
|
|
if (isEmpty(val.typeList, val.length)) {
|
|
c.status(400)
|
|
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
|
|
}
|
|
return val
|
|
}),
|
|
c => {
|
|
return getRandom(c)
|
|
}
|
|
)
|
|
|
|
app.notFound((c) => {
|
|
console.log(`Not found [${c.req.method}]: ${c.req.path}`);
|
|
return c.json(ApiResponse.err(404, responseStr.API_NOTFOUND))
|
|
})
|
|
|
|
export default {
|
|
port: "8080",
|
|
fetch: app.fetch
|
|
} |