# middleware/context.py """ DEPRECATED: This module is deprecated in favor of middleware/frontend_type.py The RequestContext enum and ContextMiddleware have been replaced by: - FrontendType enum (app/modules/enums.py) - FrontendTypeMiddleware (middleware/frontend_type.py) - FrontendDetector (app/core/frontend_detector.py) This file is kept for backwards compatibility during the migration period. All new code should use FrontendType and FrontendTypeMiddleware instead. Migration guide: - RequestContext.API -> Check with FrontendDetector.is_api_request() - RequestContext.ADMIN -> FrontendType.ADMIN - RequestContext.STORE_DASHBOARD -> FrontendType.STORE - RequestContext.SHOP -> FrontendType.STOREFRONT - RequestContext.FALLBACK -> FrontendType.PLATFORM (or handle API separately) - get_request_context(request) -> get_frontend_type(request) - request.state.context_type -> request.state.frontend_type """ import logging import warnings from enum import Enum from fastapi import Request from app.modules.enums import FrontendType from middleware.frontend_type import get_frontend_type logger = logging.getLogger(__name__) class RequestContext(str, Enum): """ DEPRECATED: Use FrontendType enum instead. Request context types for the application. This enum is kept for backwards compatibility. Migration: - API -> Use FrontendDetector.is_api_request() + FrontendType - ADMIN -> FrontendType.ADMIN - STORE_DASHBOARD -> FrontendType.STORE - SHOP -> FrontendType.STOREFRONT - FALLBACK -> FrontendType.PLATFORM """ API = "api" ADMIN = "admin" STORE_DASHBOARD = "store" SHOP = "shop" FALLBACK = "fallback" def get_request_context(request: Request) -> RequestContext: """ DEPRECATED: Use get_frontend_type() from middleware.frontend_type instead. Helper function to get current request context. This function maps FrontendType to RequestContext for backwards compatibility. Args: request: FastAPI request object Returns: RequestContext enum value (defaults to FALLBACK if not set) """ warnings.warn( "get_request_context() is deprecated. Use get_frontend_type() from " "middleware.frontend_type instead.", DeprecationWarning, stacklevel=2, ) # Get the new frontend_type frontend_type = get_frontend_type(request) # Map FrontendType to RequestContext for backwards compatibility mapping = { FrontendType.ADMIN: RequestContext.ADMIN, FrontendType.STORE: RequestContext.STORE_DASHBOARD, FrontendType.STOREFRONT: RequestContext.SHOP, FrontendType.PLATFORM: RequestContext.FALLBACK, } # Check if it's an API request if request.url.path.startswith("/api/"): return RequestContext.API return mapping.get(frontend_type, RequestContext.FALLBACK) # ContextManager and ContextMiddleware are removed. # They have been replaced by FrontendDetector and FrontendTypeMiddleware. # Import from the new locations: # from app.core.frontend_detector import FrontendDetector # from middleware.frontend_type import FrontendTypeMiddleware, get_frontend_type