48 lines
933 B
JavaScript
48 lines
933 B
JavaScript
import store from "@/store";
|
|
import { renew } from "@/utils/auth";
|
|
import { baseURL } from "@/utils/constants";
|
|
|
|
export async function fetchURL(url, opts) {
|
|
opts = opts || {};
|
|
opts.headers = opts.headers || {};
|
|
|
|
let { headers, ...rest } = opts;
|
|
|
|
let res;
|
|
try {
|
|
res = await fetch(`${baseURL}${url}`, {
|
|
headers: {
|
|
"X-Auth": store.state.jwt,
|
|
...headers,
|
|
},
|
|
...rest,
|
|
});
|
|
} catch (error) {
|
|
return { status: 0 };
|
|
}
|
|
|
|
if (res.headers.get("X-Renew-Token") === "true") {
|
|
await renew(store.state.jwt);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
export async function fetchJSON(url, opts) {
|
|
const res = await fetchURL(url, opts);
|
|
|
|
if (res.status === 200) {
|
|
return res.json();
|
|
} else {
|
|
throw new Error(res.status);
|
|
}
|
|
}
|
|
|
|
export function removePrefix(url) {
|
|
url = url.split("/").splice(2).join("/");
|
|
|
|
if (url === "") url = "/";
|
|
if (url[0] !== "/") url = "/" + url;
|
|
return url;
|
|
}
|