59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
/* eslint-disable prefer-destructuring */
|
|
const ADMIN_USERNAME = process.env.NEXT_PUBLIC_ADMIN_USERNAME;
|
|
const ADMIN_STREAMKEY = process.env.NEXT_PUBLIC_ADMIN_STREAMKEY;
|
|
const NEXT_PUBLIC_API_HOST = process.env.NEXT_PUBLIC_API_HOST;
|
|
|
|
const API_LOCATION = `${NEXT_PUBLIC_API_HOST}api/admin/`;
|
|
|
|
export const FETCH_INTERVAL = 15000;
|
|
|
|
// Current inbound broadcaster info
|
|
export const BROADCASTER = `${API_LOCATION}broadcaster`;
|
|
|
|
// Disconnect inbound stream
|
|
export const DISCONNECT = `${API_LOCATION}disconnect`;
|
|
|
|
// Change the current streaming key in memory
|
|
export const STREAMKEY_CHANGE = `${API_LOCATION}changekey`;
|
|
|
|
// Current server config
|
|
export const SERVER_CONFIG = `${API_LOCATION}serverconfig`;
|
|
|
|
// Get viewer count over time
|
|
export const VIEWERS_OVER_TIME = `${API_LOCATION}viewersOverTime`;
|
|
|
|
// Get currently connected clients
|
|
export const CONNECTED_CLIENTS = `${API_LOCATION}clients`;
|
|
|
|
|
|
// Get hardware stats
|
|
export const HARDWARE_STATS = `${API_LOCATION}hardwarestats`;
|
|
|
|
// Current Stream status.
|
|
// This is literally the same as /api/status except it supports
|
|
// auth.
|
|
export const STREAM_STATUS = `${API_LOCATION}status`;
|
|
|
|
export async function fetchData(url) {
|
|
const encoded = btoa(`${ADMIN_USERNAME}:${ADMIN_STREAMKEY}`);
|
|
|
|
try {
|
|
const response = await fetch(url, {
|
|
headers: {
|
|
'Authorization': `Basic ${encoded}`,
|
|
},
|
|
mode: 'cors',
|
|
credentials: 'include',
|
|
});
|
|
if (!response.ok) {
|
|
const message = `An error has occured: ${response.status}`;
|
|
throw new Error(message);
|
|
}
|
|
const json = await response.json();
|
|
return json;
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
return {};
|
|
}
|