diff --git a/fishjam/_openapi_client/models/viewer_token.py b/fishjam/_openapi_client/models/viewer_token.py index 924faf5..d6c8295 100644 --- a/fishjam/_openapi_client/models/viewer_token.py +++ b/fishjam/_openapi_client/models/viewer_token.py @@ -8,7 +8,7 @@ @_attrs_define class ViewerToken: - """Token for authorizing livestream viewer connection""" + """Token for authorizing broadcaster viewer connection""" token: str """None""" diff --git a/fishjam/events/_protos/fishjam/__init__.py b/fishjam/events/_protos/fishjam/__init__.py index 70ab402..93a85f7 100644 --- a/fishjam/events/_protos/fishjam/__init__.py +++ b/fishjam/events/_protos/fishjam/__init__.py @@ -91,6 +91,18 @@ class ServerMessage(betterproto.Message): peer_deleted: "ServerMessagePeerDeleted" = betterproto.message_field( 21, group="content" ) + stream_connected: "ServerMessageStreamConnected" = betterproto.message_field( + 22, group="content" + ) + stream_disconnected: "ServerMessageStreamDisconnected" = betterproto.message_field( + 23, group="content" + ) + viewer_connected: "ServerMessageViewerConnected" = betterproto.message_field( + 24, group="content" + ) + viewer_disconnected: "ServerMessageViewerConnected" = betterproto.message_field( + 25, group="content" + ) def __post_init__(self) -> None: super().__post_init__() @@ -275,3 +287,33 @@ class ServerMessageTrackMetadataUpdated(betterproto.Message): peer_id: str = betterproto.string_field(2, group="endpoint_info") component_id: str = betterproto.string_field(3, group="endpoint_info") track: "ServerMessageTrack" = betterproto.message_field(4) + + +@dataclass(eq=False, repr=False) +class ServerMessageStreamConnected(betterproto.Message): + """Notification sent when streamer successfully connects""" + + stream_id: str = betterproto.string_field(1) + + +@dataclass(eq=False, repr=False) +class ServerMessageStreamDisconnected(betterproto.Message): + """Notification sent when streamer disconnects""" + + stream_id: str = betterproto.string_field(1) + + +@dataclass(eq=False, repr=False) +class ServerMessageViewerConnected(betterproto.Message): + """Notification sent when viewer successfully connects""" + + stream_id: str = betterproto.string_field(1) + viewer_id: str = betterproto.string_field(2) + + +@dataclass(eq=False, repr=False) +class ServerMessageViewerDisconnected(betterproto.Message): + """Notification sent when viewer disconnects""" + + stream_id: str = betterproto.string_field(1) + viewer_id: str = betterproto.string_field(2) diff --git a/poetry.lock b/poetry.lock index 6ca5e39..acfc1e8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "aenum" @@ -143,7 +143,7 @@ version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false python-versions = ">=3.9" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, @@ -269,7 +269,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -284,12 +284,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev", "test"] -markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" +groups = ["main", "dev", "test"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {main = "platform_system == \"Windows\"", dev = "platform_system == \"Windows\" or sys_platform == \"win32\"", test = "platform_system == \"Windows\" or sys_platform == \"win32\""} [[package]] name = "exceptiongroup" @@ -298,7 +298,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main", "dev", "test"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -313,7 +313,7 @@ version = "3.1.0" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.9" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136"}, {file = "flask-3.1.0.tar.gz", hash = "sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac"}, @@ -330,6 +330,22 @@ Werkzeug = ">=3.1" async = ["asgiref (>=3.2)"] dotenv = ["python-dotenv"] +[[package]] +name = "flask-cors" +version = "6.0.1" +description = "A Flask extension simplifying CORS support" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "flask_cors-6.0.1-py3-none-any.whl", hash = "sha256:c7b2cbfb1a31aa0d2e5341eea03a6805349f7a61647daee1a15c46bbe981494c"}, + {file = "flask_cors-6.0.1.tar.gz", hash = "sha256:d81bcb31f07b0985be7f48406247e9243aced229b7747219160a0559edd678db"}, +] + +[package.dependencies] +flask = ">=0.9" +Werkzeug = ">=0.7" + [[package]] name = "ghp-import" version = "2.1.0" @@ -557,7 +573,7 @@ version = "2.2.0" description = "Safely pass data to untrusted environments and back." optional = false python-versions = ">=3.8" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, @@ -569,7 +585,7 @@ version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, @@ -603,7 +619,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1394,7 +1410,7 @@ description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev", "test"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -1626,7 +1642,7 @@ version = "3.1.3" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.9" -groups = ["dev", "test"] +groups = ["main", "dev", "test"] files = [ {file = "werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e"}, {file = "werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746"}, @@ -1661,4 +1677,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.10" -content-hash = "abe9429459528d7dd38e4935e0762f8d34aeb1d6d329a0474a464d2c16a854b6" +content-hash = "c333d0d7f304dbf5f8017084a5a366c78082b89947aea162cdca8b8f56b83bc8" diff --git a/protos b/protos index 7d3dbb0..5cfc90e 160000 --- a/protos +++ b/protos @@ -1 +1 @@ -Subproject commit 7d3dbb02af1973c6312d947b41090222e0ee2758 +Subproject commit 5cfc90ed8e1cc2e7e8a5c9f87e89d4351af2f1ab diff --git a/pyproject.toml b/pyproject.toml index 68c0965..e7e7533 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fishjam-server-sdk" -version = "0.18.0" +version = "0.19.0" description = "Python server SDK for the Fishjam" authors = ["Fishjam Team"] homepage = "https://github.com/fishjam-cloud/python-server-sdk" @@ -18,6 +18,7 @@ python-dateutil = "^2.8.2" betterproto = "2.0.0b6" httpx = ">=0.20.0,<0.26.0" attrs = ">=21.3.0" +flask-cors = "^6.0.1" [tool.poetry.group.dev.dependencies] betterproto = { version = "= 2.0.0b6", extras = ["compiler"] }