You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

59 line
2.4 KiB

  1. from typing import Any, Callable, List, Optional, Sequence
  2. from fastapi.security.base import SecurityBase
  3. from pydantic.fields import ModelField
  4. class SecurityRequirement:
  5. def __init__(
  6. self, security_scheme: SecurityBase, scopes: Optional[Sequence[str]] = None
  7. ):
  8. self.security_scheme = security_scheme
  9. self.scopes = scopes
  10. class Dependant:
  11. def __init__(
  12. self,
  13. *,
  14. path_params: Optional[List[ModelField]] = None,
  15. query_params: Optional[List[ModelField]] = None,
  16. header_params: Optional[List[ModelField]] = None,
  17. cookie_params: Optional[List[ModelField]] = None,
  18. body_params: Optional[List[ModelField]] = None,
  19. dependencies: Optional[List["Dependant"]] = None,
  20. security_schemes: Optional[List[SecurityRequirement]] = None,
  21. name: Optional[str] = None,
  22. call: Optional[Callable[..., Any]] = None,
  23. request_param_name: Optional[str] = None,
  24. websocket_param_name: Optional[str] = None,
  25. http_connection_param_name: Optional[str] = None,
  26. response_param_name: Optional[str] = None,
  27. background_tasks_param_name: Optional[str] = None,
  28. security_scopes_param_name: Optional[str] = None,
  29. security_scopes: Optional[List[str]] = None,
  30. use_cache: bool = True,
  31. path: Optional[str] = None,
  32. ) -> None:
  33. self.path_params = path_params or []
  34. self.query_params = query_params or []
  35. self.header_params = header_params or []
  36. self.cookie_params = cookie_params or []
  37. self.body_params = body_params or []
  38. self.dependencies = dependencies or []
  39. self.security_requirements = security_schemes or []
  40. self.request_param_name = request_param_name
  41. self.websocket_param_name = websocket_param_name
  42. self.http_connection_param_name = http_connection_param_name
  43. self.response_param_name = response_param_name
  44. self.background_tasks_param_name = background_tasks_param_name
  45. self.security_scopes = security_scopes
  46. self.security_scopes_param_name = security_scopes_param_name
  47. self.name = name
  48. self.call = call
  49. self.use_cache = use_cache
  50. # Store the path to be able to re-generate a dependable from it in overrides
  51. self.path = path
  52. # Save the cache key at creation to optimize performance
  53. self.cache_key = (self.call, tuple(sorted(set(self.security_scopes or []))))