Fix order locale and remake Zod def of ErrorApi

This commit is contained in:
CEC
2022-04-21 14:16:18 +02:00
parent 711832bc3a
commit bc17b86ce4
7 changed files with 95 additions and 39 deletions
+17 -1
View File
@@ -245,6 +245,8 @@ export class IoSocketController {
const websocketProtocol = req.getHeader("sec-websocket-protocol");
const websocketExtensions = req.getHeader("sec-websocket-extensions");
const IPAddress = req.getHeader("x-forwarded-for");
const locale = req.getHeader("accept-language");
const roomId = query.roomId;
try {
@@ -318,7 +320,7 @@ export class IoSocketController {
roomId,
IPAddress,
characterLayers,
req.getHeader("accept-language")
locale
);
} catch (err) {
if (Axios.isAxiosError(err)) {
@@ -336,6 +338,20 @@ export class IoSocketController {
websocketExtensions,
context
);
} else {
return res.upgrade(
{
rejected: true,
reason: null,
status: 500,
message: err?.response?.data,
roomId: roomId
} as UpgradeFailedData,
websocketKey,
websocketProtocol,
websocketExtensions,
context
);
}
}
throw err;
+2 -2
View File
@@ -108,9 +108,9 @@ export class MapController extends BaseHttpController {
try {
const mapDetails = isMapDetailsData.parse(
await adminService.fetchMapDetails(
req.header("accept-language"),
query.playUri as string,
query.authToken as string
query.authToken as string,
req.header("accept-language")
)
);
+23 -15
View File
@@ -55,7 +55,13 @@ import { ExAdminSocketInterface } from "../Model/Websocket/ExAdminSocketInterfac
import { compressors } from "hyper-express";
import { isMapDetailsData } from "../Messages/JsonMessages/MapDetailsData";
import { adminService } from "./AdminService";
import { ErrorApiData } from "../Messages/JsonMessages/ErrorApiData";
import {
ErrorApiData,
isErrorApiErrorData,
isErrorApiRedirectData,
isErrorApiRetryData, isErrorApiUnauthorizedData
} from "../Messages/JsonMessages/ErrorApiData";
import {BoolValue, Int32Value, StringValue} from "google-protobuf/google/protobuf/wrappers_pb";
const debug = Debug("socket");
@@ -472,7 +478,7 @@ export class SocketManager implements ZoneEventListener {
}
public async updateRoomWithAdminData(room: PusherRoom): Promise<void> {
const data = await adminService.fetchMapDetails("en", room.roomUrl);
const data = await adminService.fetchMapDetails(room.roomUrl);
const mapDetailsData = isMapDetailsData.safeParse(data);
if (mapDetailsData.success) {
@@ -672,21 +678,23 @@ export class SocketManager implements ZoneEventListener {
client.send(serverToClientMessage.serializeBinary().buffer, true);
}
public emitErrorScreenMessage(client: compressors.WebSocket, error: ErrorApiData) {
public emitErrorScreenMessage(client: compressors.WebSocket, errorApi: ErrorApiData) {
const errorMessage = new ErrorScreenMessage();
errorMessage.setType(error.type);
errorMessage.setCode(error.code);
errorMessage.setTitle(error.title);
errorMessage.setSubtitle(error.subtitle);
errorMessage.setDetails(error.details);
errorMessage.setImage(error.image);
errorMessage.setType(errorApi.type);
if(errorApi.type == 'retry' || errorApi.type == 'error'){
errorMessage.setCode(new StringValue().setValue(errorApi.code));
errorMessage.setTitle(new StringValue().setValue(errorApi.title));
errorMessage.setSubtitle(new StringValue().setValue(errorApi.subtitle));
errorMessage.setDetails(new StringValue().setValue(errorApi.details));
errorMessage.setImage(new StringValue().setValue(errorApi.image));
}
if(errorApi.type == 'retry') {
if (errorApi.buttonTitle) errorMessage.setButtontitle(new StringValue().setValue(errorApi.buttonTitle));
if (errorApi.canRetryManual !== undefined) errorMessage.setCanretrymanual(new BoolValue().setValue(errorApi.canRetryManual));
if (errorApi.timeToRetry) errorMessage.setTimetoretry(new Int32Value().setValue(Number(errorApi.timeToRetry)));
}
if(errorApi.type == 'redirect' && errorApi.urlToRedirect) errorMessage.setUrltoredirect(new StringValue().setValue(errorApi.urlToRedirect));
if (error.urlToRedirect) errorMessage.setUrltoredirect(error.urlToRedirect);
if (error.buttonTitle) errorMessage.setButtontitle(error.buttonTitle);
if (error.canRetryManual !== undefined && null !== error.canRetryManual)
errorMessage.setCanretrymanual(error.canRetryManual);
if (error.timeToRetry && !isNaN(Number(error.timeToRetry)))
errorMessage.setTimetoretry(Number(error.timeToRetry));
const serverToClientMessage = new ServerToClientMessage();
serverToClientMessage.setErrorscreenmessage(errorMessage);