(headers: HeadersLike, header: str)
| 386 | |
| 387 | |
| 388 | def get_required_header(headers: HeadersLike, header: str) -> str: |
| 389 | lower_header = header.lower() |
| 390 | if is_mapping_t(headers): |
| 391 | # mypy doesn't understand the type narrowing here |
| 392 | for k, v in headers.items(): # type: ignore |
| 393 | if k.lower() == lower_header and isinstance(v, str): |
| 394 | return v |
| 395 | |
| 396 | # to deal with the case where the header looks like Stainless-Event-Id |
| 397 | intercaps_header = re.sub(r"([^\w])(\w)", lambda pat: pat.group(1) + pat.group(2).upper(), header.capitalize()) |
| 398 | |
| 399 | for normalized_header in [header, lower_header, header.upper(), intercaps_header]: |
| 400 | value = headers.get(normalized_header) |
| 401 | if value: |
| 402 | return value |
| 403 | |
| 404 | raise ValueError(f"Could not find {header} header") |
| 405 | |
| 406 | |
| 407 | def get_async_library() -> str: |
no test coverage detected