Coverage for nexios\openapi\config.py: 92%

1 from .models import Contact, License, Server, OpenAPI, Info, SecurityScheme, Components

2 from typing import Dict, List, Optional

3

4

5 class OpenAPIConfig:

6 def __init__(

7 self,

8 title: str = "API Documentation",

9 version: str = "1.0.0",

10 description: str = "",

11 servers: Optional[List[Server]] = None,

12 contact: Optional[Contact] = None,

13 license: Optional[License] = None,

14 ):

15 self.openapi_spec = OpenAPI(

16 openapi="3.0.0",

17 info=Info(

18 title=title,

19 version=version,

20 description=description,

21 contact=contact,

22 license=license,

23 ),

24 paths={},

25 servers=servers or [Server(url="/")],

26 components=Components(),

27 )

28 self.security_schemes: Dict[str, SecurityScheme] = {}

29

30 def add_security_scheme(self, name: str, scheme: SecurityScheme):

31 """Add a security scheme to the OpenAPI specification"""

32 if not self.openapi_spec.components:

33 self.openapi_spec.components = Components()

34

35 if not self.openapi_spec.components.securitySchemes:

36 self.openapi_spec.components.securitySchemes = {}

37

38 self.openapi_spec.components.securitySchemes[name] = scheme