workadventure/back/src/Controller/ReportController.ts
2020-10-15 11:51:24 +02:00

41 lines
1.5 KiB
TypeScript

import {BaseController} from "./BaseController";
import {HttpRequest, HttpResponse, TemplatedApp} from "uWebSockets.js";
import {IoSocketController} from "./IoSocketController";
export class ReportController extends BaseController {
constructor(private App: TemplatedApp, private ioSocketController: IoSocketController) {
super();
this.teleport();
}
teleport(){
this.App.options("/teleport", (res: HttpResponse, req: HttpRequest) => {
this.checkAdminToken(req);
this.addCorsHeaders(res);
res.end();
});
this.App.post("/teleport", (res: HttpResponse, req: HttpRequest) => {
(async () => {
try {
this.checkAdminToken(req);
this.addCorsHeaders(res);
res.onAborted(() => {
console.warn('Login request was aborted');
})
const param = await res.json();
this.ioSocketController.teleport(param.userUuid);
res.writeHeader('Content-Type', 'application/json');
res.writeStatus("200 OK").end(JSON.stringify({
mapUrl: `wait/${param.userUuid}`
}));
} catch (e) {
console.log("An error happened", e)
res.writeStatus(e.status || "500 Internal Server Error").end('An error happened');
}
})();
});
}
}