Skip to content

Commit c67448d

Browse files
committed
feat: list active streams with pre-constructed URLs for various protocols
1 parent 24d38d9 commit c67448d

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/rmmtxauthz/web/userdirect.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
"""APIs usable directly by the user with mTLS"""
22

3+
from typing import Dict, Any, Sequence
34
import logging
45

56
from fastapi import APIRouter, Depends, Request
67
from libpvarki.middleware import MTLSHeader
78

89
from ..db.user import User
910
from ..schema.userdirect import UserCredentials
11+
from ..mediamtx import MediaMTXControl
12+
from ..config import RMMTXSettings
1013

1114
LOGGER = logging.getLogger(__name__)
1215

@@ -24,3 +27,16 @@ async def get_credentials(request: Request) -> UserCredentials:
2427
"""Get my MediaMTX credentials"""
2528
user = await User.by_username(get_callsign(request))
2629
return UserCredentials(username=user.username, password=user.mtxpassword)
30+
31+
32+
@userrouter.get("/streams")
33+
async def get_streams(request: Request) -> Sequence[Dict[str, Any]]:
34+
"""Get streams"""
35+
user = await User.by_username(get_callsign(request))
36+
conf = RMMTXSettings.singleton()
37+
if conf.mtx_address == "__REQUEST_HOSTNAME__":
38+
LOGGER.warning("Setting RMMTX_MTX_ADDRESS from the request header")
39+
conf.mtx_address = request.headers.get("host", "__REQUEST_HOSTNAME__:1234").split(":", 1)[0]
40+
LOGGER.info("Setting RMMTX_MTX_ADDRESS is now: {}".format(conf.mtx_address))
41+
streams = await MediaMTXControl.singleton().get_paths(insert_credentials=f"{user.username}:{user.mtxpassword}@")
42+
return streams

0 commit comments

Comments
 (0)