Skip to content

Commit 525e290

Browse files
Reuse config base URL env resolver in client initialization
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent b29494c commit 525e290

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

hyperbrowser/client/base.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,10 @@ def __init__(
4848
os.environ.get("HYPERBROWSER_HEADERS")
4949
)
5050
)
51-
env_base_url = os.environ.get("HYPERBROWSER_BASE_URL")
5251
if base_url is None:
53-
if env_base_url is None:
54-
resolved_base_url = "https://api.hyperbrowser.ai"
55-
elif not env_base_url.strip():
56-
raise HyperbrowserError(
57-
"HYPERBROWSER_BASE_URL must not be empty when set"
58-
)
59-
else:
60-
resolved_base_url = env_base_url
52+
resolved_base_url = ClientConfig.resolve_base_url_from_env(
53+
os.environ.get("HYPERBROWSER_BASE_URL")
54+
)
6155
else:
6256
resolved_base_url = base_url
6357
config = ClientConfig(

hyperbrowser/config.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,20 @@ def from_env(cls) -> "ClientConfig":
5151
"HYPERBROWSER_API_KEY environment variable is required"
5252
)
5353

54-
raw_base_url = os.environ.get("HYPERBROWSER_BASE_URL")
55-
if raw_base_url is None:
56-
base_url = "https://api.hyperbrowser.ai"
57-
elif not raw_base_url.strip():
58-
raise HyperbrowserError("HYPERBROWSER_BASE_URL must not be empty when set")
59-
else:
60-
base_url = raw_base_url
54+
base_url = cls.resolve_base_url_from_env(
55+
os.environ.get("HYPERBROWSER_BASE_URL")
56+
)
6157
headers = cls.parse_headers_from_env(os.environ.get("HYPERBROWSER_HEADERS"))
6258
return cls(api_key=api_key, base_url=base_url, headers=headers)
6359

6460
@staticmethod
6561
def parse_headers_from_env(raw_headers: Optional[str]) -> Optional[Dict[str, str]]:
6662
return parse_headers_env_json(raw_headers)
63+
64+
@staticmethod
65+
def resolve_base_url_from_env(raw_base_url: Optional[str]) -> str:
66+
if raw_base_url is None:
67+
return "https://api.hyperbrowser.ai"
68+
if not raw_base_url.strip():
69+
raise HyperbrowserError("HYPERBROWSER_BASE_URL must not be empty when set")
70+
return raw_base_url

tests/test_config.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,3 +276,15 @@ def test_client_config_parse_headers_from_env_rejects_non_string_input():
276276
HyperbrowserError, match="HYPERBROWSER_HEADERS must be a string"
277277
):
278278
ClientConfig.parse_headers_from_env(123) # type: ignore[arg-type]
279+
280+
281+
def test_client_config_resolve_base_url_from_env_defaults_and_rejects_blank():
282+
assert ClientConfig.resolve_base_url_from_env(None) == "https://api.hyperbrowser.ai"
283+
assert (
284+
ClientConfig.resolve_base_url_from_env("https://example.local")
285+
== "https://example.local"
286+
)
287+
with pytest.raises(
288+
HyperbrowserError, match="HYPERBROWSER_BASE_URL must not be empty"
289+
):
290+
ClientConfig.resolve_base_url_from_env(" ")

0 commit comments

Comments
 (0)