from typing import Optional from configs import dify_config from services.recommend_app.recommend_app_factory import RecommendAppRetrievalFactory class RecommendedAppService: @classmethod def get_recommended_apps_and_categories(cls, language: str) -> dict: """ Get recommended apps and categories. :param language: language :return: """ mode = dify_config.HOSTED_FETCH_APP_TEMPLATES_MODE retrieval_instance = RecommendAppRetrievalFactory.get_recommend_app_factory(mode)() result = retrieval_instance.get_recommended_apps_and_categories(language) if not result.get("recommended_apps") and language != "en-US": result = ( RecommendAppRetrievalFactory.get_buildin_recommend_app_retrieval().fetch_recommended_apps_from_builtin( "en-US" ) ) return result @classmethod def get_recommend_app_detail(cls, app_id: str) -> Optional[dict]: """ Get recommend app detail. :param app_id: app id :return: """ mode = dify_config.HOSTED_FETCH_APP_TEMPLATES_MODE retrieval_instance = RecommendAppRetrievalFactory.get_recommend_app_factory(mode)() result = retrieval_instance.get_recommend_app_detail(app_id) return result