import axios from "axios"; import type { CreateRecipeRequest, CreateRecipeResponse, DeleteRecipeResponse, EditRecipeRequest, GetRecipeOfTheWeekResponse, GetRecipeResponse, IsRecipeOwnerResponse, SearchRecipesResponse, EditRecipeResponse } from "../types/api/recipe"; import type { Recipe } from "../types/recipe"; import type { ApiError } from "../types/api/error"; import type { SearchFilters } from "../types/search"; import { GetBackendUrl } from "./environment"; const BACKEND_URL = GetBackendUrl(); export async function GetRecipeOfTheWeek(): Promise { const response = await axios.get(`${BACKEND_URL}/v2/api/recipe/of-the-week`); if (response.status !== 200 || response.data.recipe === undefined) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return response.data.recipe; } export async function GetRecipe(id: number): Promise { const response = await axios.get(`${BACKEND_URL}/v2/api/recipe/${id}`); if (response.status !== 200 || response.data.recipe === undefined) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return response.data.recipe; } export async function SearchRecipes(filters: SearchFilters): Promise { const response = await axios.post(`${BACKEND_URL}/v2/api/recipe/search`, filters); if (response.status !== 200 || response.data.recipes === undefined) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return response.data.recipes; } export async function CreateRecipe(data: CreateRecipeRequest): Promise { const response = await axios.post(`${BACKEND_URL}/v2/api/recipe`, data); if (response.status !== 200 || response.data.recipe === undefined) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return response.data.recipe; } export async function EditRecipe(data: EditRecipeRequest): Promise { const response = await axios.put(`${BACKEND_URL}/v2/api/recipe/${data.Id}`, data); if (response.status !== 200 || response.data.recipe === undefined) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return response.data.recipe; } export async function DeleteRecipe(id: number): Promise { const response = await axios.delete(`${BACKEND_URL}/v2/api/recipe/${id}`); if (response.status !== 200) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return null; } export async function IsRecipeOwner(recipeId: number): Promise { const response = await axios.get(`${BACKEND_URL}/v2/api/recipe/${recipeId}/is-owner`); if (response.status !== 200) { const err: ApiError = { status: response.data.status, message: response.data.message }; return err; } return response.data.owner; }