(headers: Dict[str, str], scheme: Any)
| 189 | |
| 190 | |
| 191 | def _parse_basic_auth_scheme(headers: Dict[str, str], scheme: Any): |
| 192 | username = "" |
| 193 | password = "" |
| 194 | |
| 195 | if not isinstance(scheme, BaseModel): |
| 196 | raise TypeError("basic auth scheme must be a pydantic model") |
| 197 | |
| 198 | scheme_fields: Dict[str, FieldInfo] = scheme.__class__.model_fields |
| 199 | for name in scheme_fields: |
| 200 | scheme_field = scheme_fields[name] |
| 201 | |
| 202 | metadata = find_field_metadata(scheme_field, SecurityMetadata) |
| 203 | if metadata is None or metadata.field_name is None: |
| 204 | continue |
| 205 | |
| 206 | field_name = metadata.field_name |
| 207 | value = getattr(scheme, name) |
| 208 | |
| 209 | if field_name == "username": |
| 210 | username = value |
| 211 | if field_name == "password": |
| 212 | password = value |
| 213 | |
| 214 | data = f"{username}:{password}".encode() |
| 215 | headers["Authorization"] = f"Basic {base64.b64encode(data).decode()}" |
no test coverage detected