|
1 | 1 | import re |
2 | 2 | from datetime import datetime, timedelta, timezone |
3 | 3 | from email.utils import parsedate_to_datetime |
4 | | -from typing import Any, Dict, List, NoReturn, Optional, Tuple, Type, Union |
| 4 | +from typing import Any, Callable, Dict, List, NoReturn, Optional, Tuple, Type, Union |
5 | 5 | from urllib.parse import urljoin |
6 | 6 |
|
7 | 7 | import requests |
@@ -42,17 +42,14 @@ def __init__( |
42 | 42 | self, |
43 | 43 | base_url: str, |
44 | 44 | *, |
45 | | - headers: Optional[Dict[str, str]] = None, |
| 45 | + headers_factory: Optional[Callable[[], Dict[str, str]]] = None, |
46 | 46 | timeout: float = 5.0, |
47 | 47 | ): |
48 | 48 | self.base_url = base_url |
49 | | - self.headers = headers |
| 49 | + self.headers_factory = headers_factory |
50 | 50 | self.timeout = timeout |
51 | 51 | self.retry_after: Optional[datetime] = None |
52 | 52 | self.session = requests.Session() |
53 | | - self.session.headers["User-Agent"] = "OpenFeature/1.0.0" |
54 | | - if headers: |
55 | | - self.session.headers.update(headers) |
56 | 53 |
|
57 | 54 | def get_metadata(self) -> Metadata: |
58 | 55 | return Metadata(name="OpenFeature Remote Evaluation Protocol Provider") |
@@ -130,6 +127,7 @@ def _resolve( |
130 | 127 | urljoin(self.base_url, f"/ofrep/v1/evaluate/flags/{flag_key}"), |
131 | 128 | json=_build_request_data(evaluation_context), |
132 | 129 | timeout=self.timeout, |
| 130 | + headers=self.headers_factory() if self.headers_factory else None, |
133 | 131 | ) |
134 | 132 | response.raise_for_status() |
135 | 133 |
|
|
0 commit comments