From ce1a8d6835abdc48da1bfe7c4ba5e1e67b3e70b0 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 16 Nov 2023 10:55:26 -0300 Subject: [PATCH] Refactor store service and API router Add error handling for unauthorized access to resources --- src/backend/langflow/api/v1/store.py | 6 +++--- src/backend/langflow/services/store/service.py | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index 4bf7fa2ed..58dc30b70 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -4,7 +4,6 @@ from uuid import UUID from fastapi import APIRouter, Depends, HTTPException, Query from httpx import HTTPStatusError - from langflow.services.auth import utils as auth_utils from langflow.services.database.models.user.user import User from langflow.services.deps import get_settings_service, get_store_service @@ -127,6 +126,8 @@ async def get_components( except HTTPStatusError as exc: if exc.response.status_code == 403: raise ValueError("You are not authorized to access this public resource") + elif exc.response.status_code == 401: + raise ValueError("You are not authorized to access this resource. Please check your API key.") try: if result: if len(result) >= limit: @@ -187,10 +188,9 @@ async def download_component( @router.get("/tags", response_model=List[TagResponse]) async def get_tags( store_service: StoreService = Depends(get_store_service), - store_api_Key: str = Depends(get_optional_user_store_api_key), ): try: - return await store_service.get_tags(store_api_Key) + return await store_service.get_tags() except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index 9257f0a21..691c56df5 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -4,8 +4,6 @@ from uuid import UUID import httpx from httpx import HTTPError, HTTPStatusError -from loguru import logger - from langflow.services.base import Service from langflow.services.store.schema import ( CreateComponentResponse, @@ -14,6 +12,7 @@ from langflow.services.store.schema import ( StoreComponentCreate, ) from langflow.services.store.utils import process_tags_for_post +from loguru import logger if TYPE_CHECKING: from langflow.services.settings.service import SettingsService @@ -285,10 +284,10 @@ class StoreService(Service): pass raise ValueError(f"Upload failed: {exc}") - async def get_tags(self, api_key: str) -> List[Dict[str, Any]]: + async def get_tags(self) -> List[Dict[str, Any]]: url = f"{self.base_url}/items/tags" params = {"fields": ",".join(["id", "name"])} - tags = await self._get(url, api_key, params) + tags = await self._get(url, api_key=None, params=params) return tags async def get_user_likes(self, api_key: str) -> List[Dict[str, Any]]: