2016-03-26 18:19:10 +08:00
|
|
|
import {NextFunction, Request, Response} from "express";
|
|
|
|
import {Error, ErrorCodes} from "../../common/entities/Error";
|
|
|
|
import {Utils} from "../../common/Utils";
|
|
|
|
import {Message} from "../../common/entities/Message";
|
2017-07-04 01:17:49 +08:00
|
|
|
import {SharingDTO} from "../../common/entities/SharingDTO";
|
2017-07-08 18:43:42 +08:00
|
|
|
import {Config} from "../../common/config/private/Config";
|
|
|
|
import {PrivateConfigClass} from "../../common/config/private/PrivateConfigClass";
|
2017-07-09 20:23:50 +08:00
|
|
|
import {UserRoles} from "../../common/entities/UserDTO";
|
|
|
|
import {NotificationManager} from "../model/NotifocationManager";
|
2016-03-26 18:19:10 +08:00
|
|
|
|
|
|
|
export class RenderingMWs {
|
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
public static renderResult(req: Request, res: Response, next: NextFunction) {
|
|
|
|
if (!req.resultPipe)
|
|
|
|
return next();
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
return RenderingMWs.renderMessage(res, req.resultPipe);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
public static renderSessionUser(req: Request, res: Response, next: NextFunction) {
|
|
|
|
if (!(req.session.user)) {
|
2017-07-04 01:17:49 +08:00
|
|
|
return next(new Error(ErrorCodes.GENERAL_ERROR, "User not exists"));
|
2016-03-26 18:19:10 +08:00
|
|
|
}
|
|
|
|
|
2017-07-04 01:17:49 +08:00
|
|
|
const user = Utils.clone(req.session.user);
|
2017-06-11 04:32:56 +08:00
|
|
|
delete user.password;
|
|
|
|
RenderingMWs.renderMessage(res, user);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2017-07-04 01:17:49 +08:00
|
|
|
public static renderSharing(req: Request, res: Response, next: NextFunction) {
|
|
|
|
if (!req.resultPipe)
|
|
|
|
return next();
|
|
|
|
|
|
|
|
const sharing = Utils.clone<SharingDTO>(req.resultPipe);
|
|
|
|
delete sharing.password;
|
|
|
|
RenderingMWs.renderMessage(res, sharing);
|
|
|
|
}
|
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
public static renderFile(req: Request, res: Response, next: NextFunction) {
|
|
|
|
if (!req.resultPipe)
|
|
|
|
return next();
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
return res.sendFile(req.resultPipe);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static renderOK(req: Request, res: Response, next: NextFunction) {
|
|
|
|
let message = new Message<string>(null, "ok");
|
|
|
|
res.json(message);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2017-07-08 18:43:42 +08:00
|
|
|
|
|
|
|
public static renderConfig(req: Request, res: Response, next: NextFunction) {
|
|
|
|
let message = new Message<PrivateConfigClass>(null, Config);
|
|
|
|
res.json(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
public static renderError(err: any, req: Request, res: Response, next: NextFunction): any {
|
2017-07-09 20:23:50 +08:00
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
if (err instanceof Error) {
|
2017-07-09 20:23:50 +08:00
|
|
|
if (!(req.session.user && req.session.user.role >= UserRoles.Developer)) {
|
|
|
|
delete (err.details);
|
|
|
|
}
|
2017-06-11 04:32:56 +08:00
|
|
|
let message = new Message<any>(err, null);
|
|
|
|
return res.json(message);
|
2016-03-26 18:19:10 +08:00
|
|
|
}
|
2017-07-09 20:23:50 +08:00
|
|
|
NotificationManager.error("unknown server error", err);
|
2017-06-11 04:32:56 +08:00
|
|
|
return next(err);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
protected static renderMessage<T>(res: Response, content: T) {
|
|
|
|
let message = new Message<T>(null, content);
|
|
|
|
res.json(message);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
}
|