3 changed files with 105 additions and 1 deletions
@ -0,0 +1,32 @@ |
|||||||
|
import React, { useState, useEffect } from 'react'; |
||||||
|
import { BROADCASTER, fetchData } from './utils/apis'; |
||||||
|
|
||||||
|
export default function Admin() { |
||||||
|
const [broadcasterStatus, setBroadcasterStatus] = useState({}); |
||||||
|
let getStatusIntervalId = null; |
||||||
|
|
||||||
|
|
||||||
|
const getBroadcastStatus = async () => { |
||||||
|
try { |
||||||
|
const result = await fetchData(BROADCASTER); |
||||||
|
const active = !!result.broadcaster; |
||||||
|
|
||||||
|
setBroadcasterStatus({ ...result, active }); |
||||||
|
} catch(error) { |
||||||
|
setBroadcasterStatus({ ...broadcasterStatus, message: error.message }); |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
useEffect(() => { getBroadcastStatus(); }, []); |
||||||
|
|
||||||
|
|
||||||
|
console.log("============",broadcasterStatus) |
||||||
|
// getStatusIntervalId = setInterval(getBroadcastStatus, 15000);
|
||||||
|
return ( |
||||||
|
<div> |
||||||
|
{JSON.stringify(broadcasterStatus)} |
||||||
|
</div> |
||||||
|
); |
||||||
|
} |
@ -0,0 +1,62 @@ |
|||||||
|
|
||||||
|
|
||||||
|
const IS_DEV = true; |
||||||
|
const ADMIN_USERNAME = 'admin'; |
||||||
|
const ADMIN_STREAMKEY = 'abc123'; |
||||||
|
|
||||||
|
const API_LOCATION = 'http://localhost:8080/api/admin/'; |
||||||
|
|
||||||
|
// 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 hardware stats
|
||||||
|
export const HARDWARE_STATS = `${API_LOCATION}hardwarestats`; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Current Stream status (no auth)
|
||||||
|
// use `admin/broadcaster` instead
|
||||||
|
// export const STREAM_STATUS = '/api/status';
|
||||||
|
|
||||||
|
export async function fetchData(url) { |
||||||
|
const headers = new Headers(); |
||||||
|
const encoded = btoa(`${ADMIN_USERNAME}:${ADMIN_STREAMKEY}`); |
||||||
|
// headers.set('Authorization', `Basic ${encoded}`);
|
||||||
|
console.log({encoded}, `${ADMIN_USERNAME}:${ADMIN_STREAMKEY}`) |
||||||
|
|
||||||
|
|
||||||
|
const response = await fetch(url, { |
||||||
|
headers: { |
||||||
|
'Authorization': `Basic ${encoded}`, |
||||||
|
'Credentials': 'include', |
||||||
|
}, |
||||||
|
mode: 'no-cors', |
||||||
|
}); |
||||||
|
// waits until the request completes...
|
||||||
|
// console.log(response);
|
||||||
|
|
||||||
|
if (!response.ok) { |
||||||
|
const message = `An error has occured: ${response.status}`; |
||||||
|
throw new Error(message); |
||||||
|
} |
||||||
|
|
||||||
|
const json = await response.json(); |
||||||
|
return json; |
||||||
|
} |
||||||
|
|
||||||
|
// fetch error cases
|
||||||
|
// json.catch(error => {
|
||||||
|
// error.message; // 'An error has occurred: 404'
|
||||||
|
// });
|
Loading…
Reference in new issue