plane/web/services/api.service.ts
sriram veeraghanta a328c530d0 chore: store setup
2023-09-20 20:33:25 +05:30

145 lines
3.2 KiB
TypeScript

import axios from "axios";
import Cookies from "js-cookie";
// const unAuthorizedStatus = [401];
// const nonValidatedRoutes = [
// "/",
// "/magic-sign-in",
// "/reset-password",
// "/workspace-member-invitation",
// "/sign-up",
// "/m/",
// ];
// const validateRouteCheck = (route: string): boolean => {
// let validationToggle = false;
// let routeCheck = false;
// nonValidatedRoutes.forEach((_route: string) => {
// if (route.includes(_route)) {
// routeCheck = true;
// }
// });
// if (routeCheck) validationToggle = true;
// return validationToggle;
// };
// axios.interceptors.response.use(
// (response) => response,
// (error) => {
// const { status }: any = error.response;
// if (!validateRouteCheck(window.location.pathname)) {
// if (unAuthorizedStatus.includes(status)) {
// Cookies.remove("refreshToken", { path: "/" });
// Cookies.remove("accessToken", { path: "/" });
// window.location.href = `/?next_url=${window.location.pathname}`;
// }
// }
// return Promise.reject(error);
// }
// );
abstract class APIService {
protected baseURL: string;
protected headers: any = {};
constructor(baseURL: string) {
this.baseURL = baseURL;
}
setRefreshToken(token: string) {
Cookies.set("refreshToken", token);
}
getRefreshToken() {
return Cookies.get("refreshToken");
}
purgeRefreshToken() {
Cookies.remove("refreshToken", { path: "/" });
}
setAccessToken(token: string) {
Cookies.set("accessToken", token);
}
getAccessToken() {
return Cookies.get("accessToken");
}
purgeAccessToken() {
Cookies.remove("accessToken", { path: "/" });
}
getHeaders() {
return {
Authorization: `Bearer ${this.getAccessToken()}`,
};
}
getWithoutBase(url: string, config = {}): Promise<any> {
return axios({
method: "get",
url: url,
headers: this.getAccessToken() ? this.getHeaders() : {},
...config,
});
}
get(url: string, config = {}): Promise<any> {
return axios({
method: "get",
url: this.baseURL + url,
headers: this.getAccessToken() ? this.getHeaders() : {},
...config,
});
}
post(url: string, data = {}, config = {}): Promise<any> {
return axios({
method: "post",
url: this.baseURL + url,
data,
headers: this.getAccessToken() ? this.getHeaders() : {},
...config,
});
}
put(url: string, data = {}, config = {}): Promise<any> {
return axios({
method: "put",
url: this.baseURL + url,
data,
headers: this.getAccessToken() ? this.getHeaders() : {},
...config,
});
}
patch(url: string, data = {}, config = {}): Promise<any> {
return axios({
method: "patch",
url: this.baseURL + url,
data,
headers: this.getAccessToken() ? this.getHeaders() : {},
...config,
});
}
delete(url: string, data?: any, config = {}): Promise<any> {
return axios({
method: "delete",
url: this.baseURL + url,
data: data,
headers: this.getAccessToken() ? this.getHeaders() : {},
...config,
});
}
request(config = {}) {
return axios(config);
}
}
export default APIService;