Add fetchMapDetails for the mocking LocalAPI

This commit is contained in:
CEC 2022-04-13 18:40:14 +02:00
parent 5ee13d2001
commit 5507a91d48

View File

@ -1,5 +1,9 @@
import { FetchMemberDataByUuidResponse } from "./AdminApi";
import { AdminInterface } from "./AdminInterface";
import {FetchMemberDataByUuidResponse} from "./AdminApi";
import {AdminInterface} from "./AdminInterface";
import {MapDetailsData} from "../Messages/JsonMessages/MapDetailsData";
import {RoomRedirect} from "../Messages/JsonMessages/RoomRedirect";
import {GameRoomPolicyTypes} from "../Model/PusherRoom";
import {DISABLE_ANONYMOUS} from "../Enum/EnvironmentVariable";
/**
* A local class mocking a real admin if no admin is configured.
@ -24,6 +28,35 @@ class LocalAdmin implements AdminInterface {
userRoomToken: undefined,
});
}
fetchMapDetails(
playUri: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
userId?: string
): Promise<MapDetailsData | RoomRedirect> {
const roomUrl = new URL(playUri);
const match = /\/_\/[^/]+\/(.+)/.exec(roomUrl.pathname);
if (!match) {
throw new Error("URL format is not good");
}
const mapUrl = roomUrl.protocol + "//" + match[1];
return Promise.resolve({
mapUrl,
policy_type: GameRoomPolicyTypes.ANONYMOUS_POLICY,
tags: [],
authenticationMandatory: DISABLE_ANONYMOUS,
roomSlug: null,
contactPage: null,
group: null,
iframeAuthentication: null,
loadingLogo: null,
loginSceneLogo: null
});
}
}
export const localAdmin = new LocalAdmin();