Skip to content

Commit 2352d08

Browse files
authored
load env at runtime (#113)
1 parent a13ab4c commit 2352d08

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

livekit-api/livekit/api/access_token.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import datetime
1919
import os
2020
import jwt
21+
from typing import Optional
2122

2223
DEFAULT_TTL = datetime.timedelta(hours=6)
2324
DEFAULT_LEEWAY = datetime.timedelta(minutes=1)
@@ -74,14 +75,18 @@ class Claims:
7475
class AccessToken:
7576
def __init__(
7677
self,
77-
api_key: str = os.getenv("LIVEKIT_API_KEY", ""),
78-
api_secret: str = os.getenv("LIVEKIT_API_SECRET", ""),
78+
api_key: Optional[str] = None,
79+
api_secret: Optional[str] = None,
7980
) -> None:
81+
api_key = api_key or os.getenv("LIVEKIT_API_KEY")
82+
api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
83+
84+
if not api_key or not api_secret:
85+
raise ValueError("api_key and api_secret must be set")
86+
8087
self.api_key = api_key # iss
8188
self.api_secret = api_secret
8289
self.claims = Claims()
83-
if not api_key or not api_secret:
84-
raise ValueError("api_key and api_secret must be set")
8590

8691
# default jwt claims
8792
self.identity = "" # sub
@@ -137,11 +142,17 @@ def to_jwt(self) -> str:
137142
class TokenVerifier:
138143
def __init__(
139144
self,
140-
api_key: str = os.getenv("LIVEKIT_API_KEY", ""),
141-
api_secret: str = os.getenv("LIVEKIT_API_SECRET", ""),
145+
api_key: Optional[str] = None,
146+
api_secret: Optional[str] = None,
142147
*,
143148
leeway: datetime.timedelta = DEFAULT_LEEWAY,
144149
) -> None:
150+
api_key = api_key or os.getenv("LIVEKIT_API_KEY")
151+
api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
152+
153+
if not api_key or not api_secret:
154+
raise ValueError("api_key and api_secret must be set")
155+
145156
self.api_key = api_key
146157
self.api_secret = api_secret
147158
self._leeway = leeway

livekit-api/livekit/api/livekit_api.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,28 @@
33
from .room_service import RoomService
44
from .egress_service import EgressService
55
from .ingress_service import IngressService
6+
from typing import Optional
67

78

89
class LiveKitAPI:
910
def __init__(
1011
self,
11-
url: str = os.getenv("LIVEKIT_URL", "http://localhost:7880"),
12-
api_key: str = os.getenv("LIVEKIT_API_KEY", ""),
13-
api_secret: str = os.getenv("LIVEKIT_API_SECRET", ""),
12+
url: Optional[str] = None,
13+
api_key: Optional[str] = None,
14+
api_secret: Optional[str] = None,
1415
*,
1516
timeout: float = 60, # 1 minutes by default
1617
):
18+
url = url or os.getenv("LIVEKIT_URL")
19+
api_key = api_key or os.getenv("LIVEKIT_API_KEY")
20+
api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
21+
22+
if not url:
23+
raise ValueError("url must be set")
24+
25+
if not api_key or not api_secret:
26+
raise ValueError("api_key and api_secret must be set")
27+
1728
self._session = aiohttp.ClientSession(timeout=timeout)
1829
self._room = RoomService(url, api_key, api_secret, self._session)
1930
self._ingress = IngressService(url, api_key, api_secret, self._session)

0 commit comments

Comments
 (0)