mirror of
https://github.com/ragestudio/linebridge.git
synced 2025-06-09 18:44:17 +00:00
refactor endpoints register & middleware query
This commit is contained in:
parent
b97d906813
commit
6414dba098
@ -86,30 +86,39 @@ class Server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
registerEndpoint(method, route, controller) {
|
registerEndpoint(endpoint) {
|
||||||
if (typeof controller === "function") {
|
if (typeof endpoint.controller === "function") {
|
||||||
controller = new classes.Controller(route, controller)
|
endpoint.controller = new classes.Controller(endpoint.route, endpoint.controller)
|
||||||
}
|
}
|
||||||
|
|
||||||
const endpoint = { method: method, route: route, controller: controller }
|
this.endpoints[endpoint.route] = endpoint
|
||||||
|
this.routes.push(endpoint.route)
|
||||||
|
|
||||||
this.endpoints[route] = endpoint
|
this.httpServer[endpoint.method.toLowerCase()](endpoint.route, (req, res, next) => this.handleRequest(req, res, next, endpoint))
|
||||||
|
|
||||||
this.routes.push(route)
|
|
||||||
this.httpServer[method.toLowerCase()](route, (req, res, next) => this.handleRequest(req, res, next, endpoint))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
handleRequest = (req, res, next, endpoint) => {
|
handleRequest = (req, res, next, endpoint) => {
|
||||||
const { route, method, controller } = endpoint
|
const { route, controller } = endpoint
|
||||||
|
|
||||||
req.requestId = nanoid()
|
req.requestId = nanoid()
|
||||||
req.endpoint = endpoint
|
req.endpoint = endpoint
|
||||||
|
|
||||||
// exec middleware before controller
|
// exec middleware before controller
|
||||||
if (typeof controller.middleware !== "undefined") {
|
if (typeof endpoint.middleware !== "undefined") {
|
||||||
if (typeof this.middlewares[controller.middleware] === "function") {
|
let query = []
|
||||||
this.middlewares[controller.middleware](req, res, next)
|
|
||||||
|
if (endpoint.middleware === "string") {
|
||||||
|
query.push(endpoint.middleware)
|
||||||
}
|
}
|
||||||
|
if (Array.isArray(endpoint.middleware)) {
|
||||||
|
query = endpoint.middleware
|
||||||
|
}
|
||||||
|
|
||||||
|
query.forEach((middleware) => {
|
||||||
|
if (typeof this.middlewares[middleware] === "function") {
|
||||||
|
this.middlewares[middleware](req, res, next)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// exec controller
|
// exec controller
|
||||||
@ -214,7 +223,10 @@ class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// append to server
|
// append to server
|
||||||
this.registerEndpoint(method, route, new classes.Controller(route, controller[fn]))
|
this.registerEndpoint({
|
||||||
|
...endpoint,
|
||||||
|
controller: new classes.Controller(route, controller[fn])
|
||||||
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
runtime.logger.dump(error)
|
runtime.logger.dump(error)
|
||||||
console.error(error)
|
console.error(error)
|
||||||
@ -224,7 +236,10 @@ class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// register root resolver
|
// register root resolver
|
||||||
this.registerEndpoint("get", "/", (req, res) => {
|
this.registerEndpoint({
|
||||||
|
method: "get",
|
||||||
|
route: "/",
|
||||||
|
controller: (req, res) => {
|
||||||
// here server origin resolver
|
// here server origin resolver
|
||||||
res.json({
|
res.json({
|
||||||
id: this.id,
|
id: this.id,
|
||||||
@ -233,9 +248,13 @@ class Server {
|
|||||||
time: new Date().getTime(),
|
time: new Date().getTime(),
|
||||||
version: SERVER_VERSION
|
version: SERVER_VERSION
|
||||||
})
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
this.registerEndpoint("get", "/map", (req, res) => {
|
this.registerEndpoint({
|
||||||
|
method: "get",
|
||||||
|
route: "/map",
|
||||||
|
controller: (req, res) => {
|
||||||
const methods = {}
|
const methods = {}
|
||||||
|
|
||||||
this.routes.forEach((route) => {
|
this.routes.forEach((route) => {
|
||||||
@ -250,6 +269,7 @@ class Server {
|
|||||||
routes: this.routes,
|
routes: this.routes,
|
||||||
methods: methods
|
methods: methods
|
||||||
})
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
this.httpServer.listen(this.port, () => {
|
this.httpServer.listen(this.port, () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user