This commit is contained in:
Hayden
2020-12-24 16:37:38 -09:00
commit beed8576c2
137 changed files with 40218 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
const baseURL = "/api/";
import axios from "axios";
import store from "../store/store";
function processResponse(response) {
if (("data" in response) & ("snackbar" in response.data)) {
store.commit("setSnackBar", {
text: response.data.snackbar.text,
type: response.data.snackbar.type,
});
} else return;
}
const apiReq = {
post: async function(url, data) {
let response = await axios.post(url, data).catch(function(error) {
if (error.response) {
console.log("Error");
processResponse(error.response);
return;
}
});
processResponse(response);
return response;
},
get: async function(url, data) {
let response = await axios.get(url, data).catch(function(error) {
if (error.response) {
processResponse(error.response);
return;
} else return;
});
// processResponse(response);
return response;
},
delete: async function(url, data) {
let response = await axios.delete(url, data).catch(function(error) {
if (error.response) {
processResponse(error.response);
return;
}
});
processResponse(response);
return response;
},
};
export { apiReq };
export { baseURL };

View File

@@ -0,0 +1,37 @@
import { baseURL } from "./api-utils";
import { apiReq } from "./api-utils";
import { store } from "../store/store";
const backupBase = baseURL + "backups/";
const backupURLs = {
// Backup
avaiable: `${backupBase}avaiable/`,
createBackup: `${backupBase}export/database/`,
importBackup: (fileName) => `${backupBase}${fileName}/import/`,
deleteBackup: (fileName) => `${backupBase}${fileName}/delete/`,
};
export default {
async requestAvailable() {
let response = await apiReq.get(backupURLs.avaiable);
return response.data;
},
async import(fileName) {
apiReq.post(backupURLs.importBackup(fileName));
store.dispatch("requestRecentRecipes");
},
async delete(fileName) {
await apiReq.delete(backupURLs.deleteBackup(fileName));
},
async create(tag, template) {
let response = apiReq.post(backupURLs.createBackup, {
tag: tag,
template: template,
});
return response;
},
};

View File

@@ -0,0 +1,46 @@
import { baseURL } from "./api-utils";
import { apiReq } from "./api-utils";
const mealplanBase = baseURL + "meal-plan/";
const mealPlanURLs = {
// Meals
create: `${mealplanBase}create/`,
today: `${mealplanBase}today/`,
thisWeek: `${mealplanBase}this-week/`,
all: `${mealplanBase}all/`,
delete: (planID) => `${mealplanBase}${planID}/delete/`,
update: (planID) => `${mealplanBase}${planID}/update/`,
};
export default {
async create(postBody) {
let response = await apiReq.post(mealPlanURLs.create, postBody);
return response;
},
async all() {
let response = await apiReq.get(mealPlanURLs.all);
return response;
},
async thisWeek() {
let response = await apiReq.get(mealPlanURLs.thisWeek);
return response.data;
},
async today() {
let response = await apiReq.get(mealPlanURLs.today);
return response;
},
async delete(id) {
let response = await apiReq.delete(mealPlanURLs.delete(id));
return response;
},
async update(id, body) {
let response = await apiReq.post(mealPlanURLs.update(id), body);
return response;
},
};

View File

@@ -0,0 +1,75 @@
import { baseURL } from "./api-utils";
import { apiReq } from "./api-utils";
import { store } from "../store/store";
import { router } from "../main";
import qs from "qs";
const recipeBase = baseURL + "recipe/";
const recipeURLs = {
// Recipes
allRecipes: baseURL + "all-recipes/",
recipe: (slug) => recipeBase + slug + "/",
recipeImage: (slug) => recipeBase + "image/" + slug + "/",
createByURL: recipeBase + "create-url/",
create: recipeBase + "create/",
updateImage: (slug) => `${recipeBase}${slug}/update/image/`,
update: (slug) => `${recipeBase}${slug}/update/`,
delete: (slug) => `${recipeBase}${slug}/delete/`,
};
export default {
async createByURL(recipeURL) {
let response = await apiReq.post(recipeURLs.createByURL, { url: recipeURL });
let recipeSlug = response.data;
store.dispatch("requestRecentRecipes");
router.push(`/recipe/${recipeSlug}`);
},
async create(recipeData) {
let response = await apiReq.post(recipeURLs.create, recipeData);
return response.data;
},
async requestDetails(recipeSlug) {
let response = await apiReq.get(recipeURLs.recipe(recipeSlug));
return response.data;
},
async updateImage(recipeSlug, fileObject) {
const fd = new FormData();
fd.append("image", fileObject);
fd.append("extension", fileObject.name.split(".").pop());
let response = apiReq.post(recipeURLs.updateImage(recipeSlug), fd);
return response;
},
async update(data) {
const recipeSlug = data.slug;
apiReq.post(recipeURLs.update(recipeSlug), data);
store.dispatch("requestRecentRecipes");
},
async delete(recipeSlug) {
apiReq.delete(recipeURLs.delete(recipeSlug));
store.dispatch("requestRecentRecipes");
router.push(`/`);
},
async allByKeys(recipeKeys, num = 100) {
const response = await apiReq.get(recipeURLs.allRecipes, {
params: {
keys: recipeKeys,
num: num,
},
paramsSerializer: (params) => {
return qs.stringify(params, { arrayFormat: "repeat" });
},
});
return response.data;
},
};

View File

@@ -0,0 +1,27 @@
import { baseURL } from "./api-utils";
import { apiReq } from "./api-utils";
const settingsBase = baseURL + "site-settings/";
const settingsURLs = {
siteSettings: `${settingsBase}`,
updateSiteSettings: `${settingsBase}update/`,
testWebhooks: `${settingsBase}webhooks/test/`,
};
export default {
async requestAll() {
let response = await apiReq.get(settingsURLs.siteSettings);
return response.data;
},
async testWebhooks() {
let response = await apiReq.post(settingsURLs.testWebhooks);
return response.data;
},
async update(body) {
let response = await apiReq.post(settingsURLs.updateSiteSettings, body);
return response.data;
},
};

View File

@@ -0,0 +1,44 @@
import { baseURL } from "./api-utils";
import { apiReq } from "./api-utils";
const themesBase = baseURL + "site-settings/";
const settingsURLs = {
allThemes: `${themesBase}themes/`,
specificTheme: (themeName) => `${themesBase}themes/${themeName}/`,
createTheme: `${themesBase}themes/create/`,
updateTheme: (themeName) => `${themesBase}themes/${themeName}/update/`,
deleteTheme: (themeName) => `${themesBase}themes/${themeName}/delete/`,
};
export default {
async requestAll() {
let response = await apiReq.get(settingsURLs.allThemes);
return response.data;
},
async requestByName(name) {
let response = await apiReq.get(settingsURLs.specificTheme(name));
console.log(response);
return response.data;
},
async create(postBody) {
let response = await apiReq.post(settingsURLs.createTheme, postBody);
return response.data;
},
async update(themeName, colors) {
const body = {
name: themeName,
colors: colors,
};
let response = await apiReq.post(settingsURLs.updateTheme(themeName), body);
return response.data;
},
async delete(themeName) {
let response = await apiReq.delete(settingsURLs.deleteTheme(themeName));
return response.data;
},
};