You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
975 B
43 lines
975 B
async function fetchData(url, options) { |
|
const ADMIN_USERNAME = 'admin'; |
|
const ADMIN_STREAMKEY = 'abc123'; |
|
|
|
const { data, method = 'GET', auth = true } = options || {}; |
|
|
|
// eslint-disable-next-line no-undef |
|
const requestOptions = { |
|
method, |
|
}; |
|
|
|
if (data) { |
|
requestOptions.body = JSON.stringify(data); |
|
} |
|
|
|
if (auth && ADMIN_USERNAME && ADMIN_STREAMKEY) { |
|
const encoded = btoa(`${ADMIN_USERNAME}:${ADMIN_STREAMKEY}`); |
|
requestOptions.headers = { |
|
Authorization: `Basic ${encoded}`, |
|
}; |
|
requestOptions.mode = 'cors'; |
|
requestOptions.credentials = 'include'; |
|
} |
|
|
|
try { |
|
const response = await fetch(url, requestOptions); |
|
const json = await response.json(); |
|
|
|
if (!response.ok) { |
|
const message = |
|
json.message || `An error has occurred: ${response.status}`; |
|
throw new Error(message); |
|
} |
|
return json; |
|
} catch (error) { |
|
console.error(error); |
|
return error; |
|
// console.log(error) |
|
// throw new Error(error) |
|
} |
|
} |
|
|
|
export default fetchData;
|
|
|