Skip to content

Commit 8464071

Browse files
committed
Add SSL support to Starlette Adapter.
1 parent f12d069 commit 8464071

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

twitchio/web/starlette_adapter.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545

4646

4747
if TYPE_CHECKING:
48+
from os import PathLike
49+
4850
from starlette.requests import Request
4951

5052
from ..authentication import AuthorizationURLPayload, UserTokenPayload, ValidateTokenPayload
@@ -105,6 +107,12 @@ class StarletteAdapter(BaseAdapter, Starlette):
105107
An optional :class:`str` passed to use as the EventSub secret. It is recommended you pass this parameter when using
106108
an adapter for EventSub, as it will reset upon restarting otherwise. You can generate token safe secrets with the
107109
:mod:`secrets` module.
110+
ssl_keyfile: str | PathLike[str] | None
111+
An optional SSL key file passed to Uvicorn.
112+
ssl_keyfile_password: str | None
113+
An optional password to decrypt the ssl key, passed to Uvicorn.
114+
ssl_certfile: str | PathLike[str] | None
115+
An optional SSL certificate file, passed to Uvicorn.
108116
109117
Examples
110118
--------
@@ -143,6 +151,9 @@ def __init__(
143151
domain: str | None = None,
144152
eventsub_path: str | None = None,
145153
eventsub_secret: str | None = None,
154+
ssl_keyfile: str | PathLike[str] | None = None,
155+
ssl_keyfile_password: str | None = None,
156+
ssl_certfile: str | PathLike[str] | None = None,
146157
) -> None:
147158
self._host: str = host or "localhost"
148159
self._port: int = port or 4343
@@ -177,6 +188,10 @@ def __init__(
177188
self._server: uvicorn.Server | None = None
178189
self._running: bool = False
179190

191+
self.__certfile = ssl_certfile
192+
self.__keyfile = ssl_keyfile
193+
self.__keypass = ssl_keyfile_password
194+
180195
def __repr__(self) -> str:
181196
return f'{self.__class__.__name__}(host="{self._host}", port={self._port})'
182197

@@ -250,6 +265,9 @@ async def run(self, host: str | None = None, port: int | None = None) -> None:
250265
log_level="critical",
251266
workers=0,
252267
timeout_graceful_shutdown=3,
268+
ssl_keyfile=self.__keyfile,
269+
ssl_keyfile_password=self.__keypass,
270+
ssl_certfile=self.__certfile,
253271
)
254272

255273
self._server = uvicorn.Server(config)

0 commit comments

Comments
 (0)