watchtower/pkg/dashboard/static/api.js
2022-11-10 23:32:26 +01:00

91 lines
No EOL
2.1 KiB
JavaScript

const apiFactory = () => {
const baseUrl = "http://localhost:8080/v1";
let token = "";
const headers = () => ({
'Authorization': 'Bearer ' + token
});
const checkLogin = async () => {
const token = localStorage.getItem("token");
if (token) {
const isLoggedIn = await logIn(token);
return isLoggedIn;
}
return false;
};
const logIn = async (password, remember) => {
token = password;
const response = await fetch(baseUrl + "/list", {
credentials: 'include',
headers: headers()
});
if (response.ok) {
if (remember === true) {
localStorage.setItem("token", password);
}
return true;
}
token = "";
return false;
};
const logOut = () => {
localStorage.clear();
};
const list = async () => {
const response = await fetch(baseUrl + "/list", {
credentials: 'include',
headers: headers()
});
const data = await response.json();
return data;
};
const check = async (containerId) => {
const requestData = {
ContainerId: containerId
};
const response = await fetch(baseUrl + "/check", {
method: 'POST',
credentials: 'include',
headers: {
...headers(),
'Content-Type': 'application/json',
},
body: JSON.stringify(requestData)
});
const data = await response.json();
return data;
};
const update = async (images) => {
let updateUrl = new URL(baseUrl + "/update");
if (images instanceof Array) {
images.map(image => updateUrl.searchParams.append("image", image));
}
const response = await fetch(updateUrl.toString(), {
credentials: 'include',
headers: headers(),
});
return response.ok;
};
return {
checkLogin,
logIn,
logOut,
list,
check,
update
}
};