diff --git a/bigbluebutton_api_python/bigbluebutton.py b/bigbluebutton_api_python/bigbluebutton.py index b300cbf..f598775 100644 --- a/bigbluebutton_api_python/bigbluebutton.py +++ b/bigbluebutton_api_python/bigbluebutton.py @@ -134,7 +134,11 @@ def __send_api_request(self, api_call, params={}, data=None): if data is None: response = urlopen(url).read() else: - response = urlopen(url, data=urlencode(data).encode()).read() + if isinstance(data, str): + data_str = data + else: + data_str = urlencode(data) + response = urlopen(url, data=data_str.encode()).read() try: rawXml = parse(response)["response"] diff --git a/bigbluebutton_api_python/parameters/bbbmodule.py b/bigbluebutton_api_python/parameters/bbbmodule.py index 20df5e2..e9e440f 100644 --- a/bigbluebutton_api_python/parameters/bbbmodule.py +++ b/bigbluebutton_api_python/parameters/bbbmodule.py @@ -14,7 +14,7 @@ def __init__(self): def add_slide(self, type, value, name = None): if type == self.URL: self.__urls.append(value) - elif type == self.files: + elif type == self.FILE: self.__files.append(value) elif type == self.base64s: self.__base64s.append([name, value]) @@ -42,8 +42,8 @@ def __slides_to_xml(self): for single_file in self.__files: if os.path.exists(single_file): xml += "" - with open(single_file, 'r') as f: - xml += base64.encodestring(f.read()) + with open(single_file, 'rb',) as f: + xml += base64.encodebytes(f.read()).decode() xml += "" - + xml += "" return xml \ No newline at end of file diff --git a/bigbluebutton_api_python/responses/getmeetings.py b/bigbluebutton_api_python/responses/getmeetings.py index 37967ec..6fc8346 100644 --- a/bigbluebutton_api_python/responses/getmeetings.py +++ b/bigbluebutton_api_python/responses/getmeetings.py @@ -1,3 +1,4 @@ +from typing import List from .base import BaseResponse from ..core.meeting import Meeting @@ -11,6 +12,9 @@ def get_meetings(self): except KeyError: pass - for meetingXml in self.get_field("meetings")["meeting"]: + meetingsXml = self.get_field("meetings")["meeting"] + if not isinstance(meetingsXml, List): + meetingsXml = [meetingsXml] + for meetingXml in meetingsXml: meetings.append(Meeting(meetingXml)) return meetings \ No newline at end of file diff --git a/bigbluebutton_api_python/util/urlbuilder.py b/bigbluebutton_api_python/util/urlbuilder.py index 348a561..2322743 100644 --- a/bigbluebutton_api_python/util/urlbuilder.py +++ b/bigbluebutton_api_python/util/urlbuilder.py @@ -1,5 +1,6 @@ from hashlib import sha1 +from urllib import request from re import match class UrlBuilder: @@ -22,7 +23,7 @@ def buildUrl(self, api_call, params={}): value = "true" if value else "false" else: value = str(value) - url += key + "=" + value + "&" + url += key + "=" + request.quote(value.encode('utf-8')) + "&" url += "checksum=" + self.__get_checksum(api_call, params) return url @@ -34,8 +35,9 @@ def __get_checksum(self, api_call, params={}): value = "true" if value else "false" else: value = str(value) - secret_str += key + "=" + value + "&" + secret_str += key + "=" + request.quote(value.encode('utf-8')) + "&" if secret_str.endswith("&"): secret_str = secret_str[:-1] secret_str += self.securitySalt + request.quote(secret_str, 'utf-8') return sha1(secret_str.encode('utf-8')).hexdigest()