Source code for fatsecret.resources.meals

"""Saved meals resource — saved_meal CRUD + saved_meals.get + saved_meal_item CRUD + saved_meal_items.get."""

from __future__ import annotations

from typing import Any, Optional, Union

from ._base import BaseResource


class MealsResource(BaseResource):
    """Resource methods for the OAS `Saved Meals` tag."""

[docs] def create_v1( self, saved_meal_name: str, saved_meal_description: Optional[str] = None, meals: Optional[str] = None, ) -> Any: """saved_meal.create v1.""" params = {"method": "saved_meal.create", "saved_meal_name": saved_meal_name} self._client._set_optional( params, [("saved_meal_description", saved_meal_description), ("meals", meals)], ) payload = self._client._call(params, method="POST") return self._client._unwrap(payload, "saved_meal_id")
[docs] def edit_v1( self, saved_meal_id: str, saved_meal_name: Optional[str] = None, saved_meal_description: Optional[str] = None, meals: Optional[str] = None, ) -> Union[bool, Any]: """saved_meal.edit v1.""" params = {"method": "saved_meal.edit", "saved_meal_id": saved_meal_id} self._client._set_optional( params, [ ("saved_meal_name", saved_meal_name), ("saved_meal_description", saved_meal_description), ("meals", meals), ], ) payload = self._client._call(params, method="PUT") return self._client._mutator_success(payload)
[docs] def delete_v1(self, saved_meal_id: str) -> Union[bool, Any]: """saved_meal.delete v1.""" payload = self._client._call( {"method": "saved_meal.delete", "saved_meal_id": saved_meal_id}, method="DELETE", ) return self._client._mutator_success(payload)
[docs] def get_v1(self, meal: Optional[str] = None) -> list: """saved_meals.get v1 (DEPRECATED upstream).""" params = {"method": "saved_meals.get"} self._client._set_optional(params, [("meal", meal)]) payload = self._client._call(params) return self._client._unwrap(payload, "saved_meals", list_key="saved_meal")
[docs] def get_v2(self, meal: Optional[str] = None) -> list: """saved_meals.get v2 (current).""" params = {"method": "saved_meals.get.v2"} self._client._set_optional(params, [("meal", meal)]) payload = self._client._call(params) return self._client._unwrap(payload, "saved_meals", list_key="saved_meal")
[docs] def item_add_v1( self, saved_meal_id: str, food_id: str, saved_meal_item_name: str, serving_id: str, number_of_units: float, ) -> Any: """saved_meal_item.add v1.""" params = { "method": "saved_meal_item.add", "saved_meal_id": saved_meal_id, "food_id": food_id, "saved_meal_item_name": saved_meal_item_name, "serving_id": serving_id, "number_of_units": number_of_units, } payload = self._client._call(params, method="POST") return self._client._unwrap(payload, "saved_meal_item_id")
[docs] def item_edit_v1( self, saved_meal_item_id: str, saved_meal_item_name: Optional[str] = None, number_of_units: Optional[float] = None, ) -> Union[bool, Any]: """saved_meal_item.edit v1.""" params = { "method": "saved_meal_item.edit", "saved_meal_item_id": saved_meal_item_id, } self._client._set_optional( params, [ ("saved_meal_item_name", saved_meal_item_name), ("number_of_units", number_of_units), ], ) payload = self._client._call(params, method="PUT") return self._client._mutator_success(payload)
[docs] def item_delete_v1(self, saved_meal_item_id: str) -> Union[bool, Any]: """saved_meal_item.delete v1.""" payload = self._client._call( { "method": "saved_meal_item.delete", "saved_meal_item_id": saved_meal_item_id, }, method="DELETE", ) return self._client._mutator_success(payload)
[docs] def items_get_v1(self, saved_meal_id: str) -> list: """saved_meal_items.get v1 (DEPRECATED upstream).""" payload = self._client._call( {"method": "saved_meal_items.get", "saved_meal_id": saved_meal_id} ) return self._client._unwrap( payload, "saved_meal_items", list_key="saved_meal_item" )
[docs] def items_get_v2(self, saved_meal_id: str) -> list: """saved_meal_items.get v2 (current).""" payload = self._client._call( {"method": "saved_meal_items.get.v2", "saved_meal_id": saved_meal_id} ) return self._client._unwrap( payload, "saved_meal_items", list_key="saved_meal_item" )