mirror of
https://github.com/IrosTheBeggar/mStream.git
synced 2025-10-27 07:31:02 +00:00
67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
const API = (() => {
|
|
const module = {};
|
|
|
|
// initialize with a default server
|
|
module.servers = [{
|
|
name: "default",
|
|
url: window.location.origin,
|
|
token: localStorage.getItem('token')
|
|
}];
|
|
|
|
module.selectedServer = 0;
|
|
|
|
module.addServer = (name, url, username, password) => {
|
|
module.servers.push({
|
|
name: name,
|
|
url: url,
|
|
token: null
|
|
})
|
|
}
|
|
|
|
module.name = () => {
|
|
return module.servers[module.selectedServer].name;
|
|
}
|
|
|
|
module.token = () => {
|
|
return module.servers[module.selectedServer].token;
|
|
}
|
|
|
|
module.url = () => {
|
|
return module.servers[module.selectedServer].url;
|
|
}
|
|
|
|
module.checkAuthAndKickToLogin = async () => {
|
|
// Send request to server
|
|
try {
|
|
await axios({
|
|
method: 'GET',
|
|
url: `${module.url()}/api/`,
|
|
headers: { 'x-access-token': module.token() }
|
|
});
|
|
} catch (err) {
|
|
window.location.replace(`/login?redirect=${encodeURIComponent(window.location.pathname)}`);
|
|
}
|
|
}
|
|
|
|
module.logout = () => {
|
|
localStorage.removeItem('token');
|
|
window.location.replace(`/login`);
|
|
}
|
|
|
|
module.axios = axios.create({
|
|
baseURL: module.url(),
|
|
headers: { 'x-access-token': module.token() }
|
|
});
|
|
|
|
// TODO: We also need a way to save servers
|
|
module.changeDefaultServer = (serverIndex) => {
|
|
// TODO: Throw Error?
|
|
if (!module.servers[serverIndex]) { return false; }
|
|
|
|
module.selectedServer = serverIndex;
|
|
|
|
// TODO: update module.axios to use the token for that server
|
|
}
|
|
|
|
return module;
|
|
})(); |