1
1
"""APIs usable directly by the user with mTLS"""
2
2
3
+ from typing import Dict , Any , Sequence
3
4
import logging
4
5
5
6
from fastapi import APIRouter , Depends , Request
6
7
from libpvarki .middleware import MTLSHeader
7
8
8
9
from ..db .user import User
9
10
from ..schema .userdirect import UserCredentials
11
+ from ..mediamtx import MediaMTXControl
12
+ from ..config import RMMTXSettings
10
13
11
14
LOGGER = logging .getLogger (__name__ )
12
15
@@ -24,3 +27,16 @@ async def get_credentials(request: Request) -> UserCredentials:
24
27
"""Get my MediaMTX credentials"""
25
28
user = await User .by_username (get_callsign (request ))
26
29
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