Files
fastapi/fastapi/security/api_key.py
Sebastián Ramírez 406c092a3b 🎉 Start tracking messy initial stage
...before refactoring and breaking something
2018-12-05 10:56:50 +04:00

41 lines
973 B
Python

from starlette.requests import Request
from pydantic import Schema
from enum import Enum
from .base import SecurityBase, Types
__all__ = ["APIKeyIn", "APIKeyBase", "APIKeyQuery", "APIKeyHeader", "APIKeyCookie"]
class APIKeyIn(Enum):
query = "query"
header = "header"
cookie = "cookie"
class APIKeyBase(SecurityBase):
type_ = Schema(Types.apiKey, alias="type")
in_: str = Schema(..., alias="in")
name: str
class APIKeyQuery(APIKeyBase):
in_ = Schema(APIKeyIn.query, alias="in")
async def __call__(self, requests: Request):
return requests.query_params.get(self.name)
class APIKeyHeader(APIKeyBase):
in_ = Schema(APIKeyIn.header, alias="in")
async def __call__(self, requests: Request):
return requests.headers.get(self.name)
class APIKeyCookie(APIKeyBase):
in_ = Schema(APIKeyIn.cookie, alias="in")
async def __call__(self, requests: Request):
return requests.cookies.get(self.name)