Skip to content

Commit b9eec89

Browse files
committed
feat: take a headers_factory callable instead of fixed headers in OFREPProvider
1 parent 6a41b74 commit b9eec89

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

providers/openfeature-provider-ofrep/src/openfeature/contrib/provider/ofrep/__init__.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import re
22
from datetime import datetime, timedelta, timezone
33
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
55
from urllib.parse import urljoin
66

77
import requests
@@ -42,17 +42,14 @@ def __init__(
4242
self,
4343
base_url: str,
4444
*,
45-
headers: Optional[Dict[str, str]] = None,
45+
headers_factory: Optional[Callable[[], Dict[str, str]]] = None,
4646
timeout: float = 5.0,
4747
):
4848
self.base_url = base_url
49-
self.headers = headers
49+
self.headers_factory = headers_factory
5050
self.timeout = timeout
5151
self.retry_after: Optional[datetime] = None
5252
self.session = requests.Session()
53-
self.session.headers["User-Agent"] = "OpenFeature/1.0.0"
54-
if headers:
55-
self.session.headers.update(headers)
5653

5754
def get_metadata(self) -> Metadata:
5855
return Metadata(name="OpenFeature Remote Evaluation Protocol Provider")
@@ -130,6 +127,7 @@ def _resolve(
130127
urljoin(self.base_url, f"/ofrep/v1/evaluate/flags/{flag_key}"),
131128
json=_build_request_data(evaluation_context),
132129
timeout=self.timeout,
130+
headers=self.headers_factory() if self.headers_factory else None,
133131
)
134132
response.raise_for_status()
135133

providers/openfeature-provider-ofrep/tests/test_provider.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313

1414

1515
def test_provider_init():
16-
OFREPProvider("http://localhost:8080", headers={"Authorization": "Bearer token"})
16+
OFREPProvider(
17+
"http://localhost:8080",
18+
headers_factory=lambda: {"Authorization": "Bearer token"},
19+
)
1720

1821

1922
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)