Source code for fatsecret.resources.native

"""Resource wrapper for the OAS ``Native`` tag."""

from __future__ import annotations

from typing import Optional

from ._base import BaseResource


class NativeResource(BaseResource):
    """Resource methods for the OAS `Native` tag.

    Phase 1: pure-delegation over the flat ``natural_language_processing_*``
    and ``image_recognition_*`` methods on :class:`Fatsecret`. Future phases
    swap delegation for OAS-codegen'd implementations.
    """

[docs] def image_recognition_v1( self, image_b64: str, include_food_data: Optional[bool] = None, eaten_foods: Optional[list] = None, region: Optional[str] = None, language: Optional[str] = None, ) -> list: """image.recognition v1. URL-based REST endpoint (POST). Premier-exclusive. OAuth2 scope: `image-recognition`. image_b64 max ~999,982 chars. """ body: dict = {"image_b64": image_b64} if include_food_data is not None: body["include_food_data"] = include_food_data if eaten_foods is not None: body["eaten_foods"] = eaten_foods if region is not None: body["region"] = region if language is not None: body["language"] = language payload = self._client._call( params={"format": "json"}, url="https://platform.fatsecret.com/rest/image-recognition/v1", method="POST", json_body=body, ) if isinstance(payload, dict) and "food_response" in payload: return self._client._unwrap(payload, "food_response", list_key=None) or [] return payload
[docs] def image_recognition_v2( self, image_b64: str, include_food_data: Optional[bool] = None, eaten_foods: Optional[list] = None, region: Optional[str] = None, language: Optional[str] = None, ) -> list: """image.recognition v2. URL-based REST endpoint (POST). Premier-exclusive. OAuth2 scope: `image-recognition`. Faster inference, better handling of generic/restaurant/mixed foods. """ body: dict = {"image_b64": image_b64} if include_food_data is not None: body["include_food_data"] = include_food_data if eaten_foods is not None: body["eaten_foods"] = eaten_foods if region is not None: body["region"] = region if language is not None: body["language"] = language payload = self._client._call( params={"format": "json"}, url="https://platform.fatsecret.com/rest/image-recognition/v2", method="POST", json_body=body, ) if isinstance(payload, dict) and "food_response" in payload: return self._client._unwrap(payload, "food_response", list_key=None) or [] return payload
[docs] def natural_language_processing_v1( self, user_input: str, include_food_data: Optional[bool] = None, eaten_foods: Optional[list] = None, region: Optional[str] = None, language: Optional[str] = None, ) -> list: """natural.language.processing v1. URL-based REST endpoint (POST). Premier-exclusive. OAuth2 scope: `nlp`. user_input limited to 1000 chars. """ body: dict = {"user_input": user_input} if include_food_data is not None: body["include_food_data"] = include_food_data if eaten_foods is not None: body["eaten_foods"] = eaten_foods if region is not None: body["region"] = region if language is not None: body["language"] = language payload = self._client._call( params={"format": "json"}, url="https://platform.fatsecret.com/rest/natural-language-processing/v1", method="POST", json_body=body, ) if isinstance(payload, dict) and "food_response" in payload: return self._client._unwrap(payload, "food_response", list_key=None) or [] return payload