From 02fa5cd20a5f86c757cc30204da92824e27f8dcb Mon Sep 17 00:00:00 2001 From: Paul Adam Date: Thu, 17 Apr 2025 14:09:38 +0200 Subject: [PATCH] feat: add client_settings_override parameter to create_meeting() this allows to pass the overrides as an argument which then get passed on as data in the request to the bigbluebutton api --- sage_bbb/services/meetings.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/sage_bbb/services/meetings.py b/sage_bbb/services/meetings.py index 68db82d..d231049 100644 --- a/sage_bbb/services/meetings.py +++ b/sage_bbb/services/meetings.py @@ -53,6 +53,7 @@ def create_meeting( meeting_id: str, attendee_pw: str, moderator_pw: str, + client_settings_override: str = None, **kwargs: Any, ) -> "Meeting": """ @@ -63,6 +64,7 @@ def create_meeting( meeting_id (str): The unique identifier for the meeting. attendee_pw (str): The password for attendees. moderator_pw (str): The password for moderators. + client_settings_override(str): Overrides the html5-client settings.yml **kwargs: Additional optional parameters for the meeting. Returns: @@ -86,8 +88,23 @@ def create_meeting( "moderatorPW": moderator_pw, **kwargs, } - logger.info("Creating meeting with params: %s", params) - response = self.client.send_request("create", params) + if client_settings_override: + headers = {"Content-Type": "application/xml"} + data = ( + '\n\n' + + client_settings_override + + "\n\n" + ) + logger.info( + "Creating meeting with params: %s; headers: %s; data: %s", + params, + headers, + data, + ) + response = self.client.send_request("create", params, data, headers) + else: + logger.info("Creating meeting with params: %s", params) + response = self.client.send_request("create", params) response_dict = self.client.parse_response(response.content) logger.info("Meeting created successfully with ID: %s", meeting_id) return MeetingFactory.create_meeting(response_dict)