2021-07-19 10:16:43 +02:00
|
|
|
import { ADMIN_API_TOKEN, ADMIN_API_URL } from "../Enum/EnvironmentVariable";
|
|
|
|
import Axios from "axios";
|
2021-12-23 15:27:17 +01:00
|
|
|
import { isMapDetailsData, MapDetailsData } from "./AdminApi/MapDetailsData";
|
|
|
|
import { isRoomRedirect, RoomRedirect } from "./AdminApi/RoomRedirect";
|
2021-07-19 10:16:43 +02:00
|
|
|
|
|
|
|
class AdminApi {
|
|
|
|
async fetchMapDetails(playUri: string): Promise<MapDetailsData | RoomRedirect> {
|
|
|
|
if (!ADMIN_API_URL) {
|
|
|
|
return Promise.reject(new Error("No admin backoffice set!"));
|
|
|
|
}
|
|
|
|
|
|
|
|
const params: { playUri: string } = {
|
|
|
|
playUri,
|
|
|
|
};
|
|
|
|
|
|
|
|
const res = await Axios.get(ADMIN_API_URL + "/api/map", {
|
|
|
|
headers: { Authorization: `${ADMIN_API_TOKEN}` },
|
|
|
|
params,
|
|
|
|
});
|
2021-12-23 15:27:17 +01:00
|
|
|
|
|
|
|
if (!isMapDetailsData(res.data) && !isRoomRedirect(res.data)) {
|
|
|
|
console.error("Unexpected answer from the /api/map admin endpoint.", res.data);
|
|
|
|
throw new Error("Unexpected answer from the /api/map admin endpoint.");
|
|
|
|
}
|
|
|
|
|
2021-07-19 10:16:43 +02:00
|
|
|
return res.data;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const adminApi = new AdminApi();
|