Skip to content

Commit ddc4e68

Browse files
committed
Refactor
1 parent 2a005cf commit ddc4e68

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

src/edge_proxy/environments.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ async def refresh_environment_caches(self):
7777
def get_flags_response_data(
7878
self, environment_key: str, feature: str = None
7979
) -> dict[str, Any]:
80-
environment_document = self.get_environment(client_side_key=environment_key)
80+
environment_document = self.get_environment(environment_key=environment_key)
8181
environment = EnvironmentModel.model_validate(environment_document)
8282
is_server_key = environment_key.startswith(SERVER_API_KEY_PREFIX)
8383

@@ -106,7 +106,7 @@ def get_flags_response_data(
106106
def get_identity_response_data(
107107
self, input_data: IdentityWithTraits, environment_key: str
108108
) -> dict[str, Any]:
109-
environment_document = self.get_environment(client_side_key=environment_key)
109+
environment_document = self.get_environment(environment_key=environment_key)
110110
environment = EnvironmentModel.model_validate(environment_document)
111111
is_server_key = environment_key.startswith(SERVER_API_KEY_PREFIX)
112112

@@ -140,21 +140,17 @@ def get_identity_response_data(
140140
def get_environment(
141141
self,
142142
*,
143-
client_side_key: Optional[str] = None,
144-
server_side_key: Optional[str] = None,
143+
environment_key: Optional[str] = None,
145144
) -> dict[str, Any]:
146-
if client_side_key:
147-
if environment_document := self.cache.get_environment(client_side_key):
148-
return environment_document
149-
raise FlagsmithUnknownKeyError(client_side_key)
150-
if server_side_key:
151-
for key_pair in self.settings.environment_key_pairs:
152-
if key_pair.server_side_key == server_side_key:
153-
if environment_document := self.cache.get_environment(
154-
key_pair.client_side_key
155-
):
156-
return environment_document
157-
raise FlagsmithUnknownKeyError(server_side_key)
145+
if environment_key.startswith(SERVER_API_KEY_PREFIX):
146+
client_side_key = self._get_client_key_from_server_key(environment_key)
147+
else:
148+
client_side_key = environment_key
149+
150+
if environment_document := self.cache.get_environment(client_side_key):
151+
return environment_document
152+
153+
raise FlagsmithUnknownKeyError(environment_key)
158154

159155
async def _fetch_document(self, key_pair: EnvironmentKeyPair) -> dict[str, Any]:
160156
headers = {
@@ -198,3 +194,9 @@ async def _clear_endpoint_caches(self):
198194
func.cache_clear()
199195
except AttributeError:
200196
pass
197+
198+
def _get_client_key_from_server_key(self, server_key: str) -> str:
199+
for key_pair in self.settings.environment_key_pairs:
200+
if key_pair.server_side_key == server_key:
201+
return key_pair.client_side_key
202+
raise FlagsmithUnknownKeyError(server_key)

src/edge_proxy/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ async def environment_document(
130130
x_environment_key: str = Header(None),
131131
) -> ORJSONResponse:
132132
if environment_doc := environment_service.get_environment(
133-
server_side_key=x_environment_key,
133+
environment_key=x_environment_key,
134134
):
135135
return ORJSONResponse(environment_doc)
136136
return ORJSONResponse(status_code=401, content=None)

tests/test_environments.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,32 +111,32 @@ async def test_get_environment_works_correctly(mocker: MockerFixture):
111111
# Next, test that get environment return correct document
112112
assert (
113113
environment_service.get_environment(
114-
client_side_key=settings.environment_key_pairs[0].client_side_key
114+
environment_key=settings.environment_key_pairs[0].client_side_key
115115
)
116116
== doc_1
117117
)
118118
assert (
119119
environment_service.get_environment(
120-
client_side_key=settings.environment_key_pairs[1].client_side_key
120+
environment_key=settings.environment_key_pairs[1].client_side_key
121121
)
122122
== doc_2
123123
)
124124
assert mock_client.get.call_count == 2
125125

126126
# Next, let's verify that any additional call to get_environment does not call fetch document
127127
environment_service.get_environment(
128-
client_side_key=settings.environment_key_pairs[0].client_side_key
128+
environment_key=settings.environment_key_pairs[0].client_side_key
129129
)
130130
environment_service.get_environment(
131-
client_side_key=settings.environment_key_pairs[1].client_side_key
131+
environment_key=settings.environment_key_pairs[1].client_side_key
132132
)
133133
assert mock_client.get.call_count == 2
134134

135135

136136
def test_get_environment_raises_for_unknown_keys():
137137
environment_service = EnvironmentService(settings=settings)
138138
with pytest.raises(FlagsmithUnknownKeyError):
139-
environment_service.get_environment(client_side_key="test_env_key_unknown")
139+
environment_service.get_environment(environment_key="test_env_key_unknown")
140140

141141

142142
@pytest.mark.asyncio

0 commit comments

Comments
 (0)