Skip to content
Snippets Groups Projects
Verified Commit aee69f3b authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Support passing redirect from join in handle_from_data

parent 122a11f2
No related branches found
No related tags found
No related merge requests found
Pipeline #5075 failed
......@@ -637,19 +637,25 @@ class BigBlueButtonGroup:
meeting = self._find_meeting(attrs["meetingID"], filter_meta)
if meeting:
kwargs = Attendee.get_kwargs_from_url_args(attrs, meeting)
do_join = not (attrs.get("redirect", "true") == "true")
attendee = Attendee(meeting=meeting, **kwargs)
attendee.join()
# We need to construct this one response manually, because for some inobvious
# reason the designers of the BBB API changed their minds and started using
# snake_case instead of dromedarCase
return {
"meeting_id": meeting.meeting_id,
"user_id": attendee.user_id,
"auth_token": attendee.auth_token,
"session_token": attendee.session_token,
"url": attendee.url,
}
res = attendee.join(do_join=do_join)
if do_join:
# We need to construct this one response manually, because for some inobvious
# reason the designers of the BBB API changed their minds and started using
# snake_case instead of dromedarCase
return {
"meeting_id": meeting.meeting_id,
"user_id": attendee.user_id,
"auth_token": attendee.auth_token,
"session_token": attendee.session_token,
"url": attendee.url,
}
else:
return res
else:
raise KeyError("Meeting not found.")
elif method == "isMeetingRunning":
......
......@@ -3,6 +3,7 @@ from typing import Optional
from django.contrib.sites.shortcuts import get_current_site
from django.db.models import QuerySet
from django.http import HttpRequest, HttpResponse
from django.shortcuts import redirect
from django.views import View
from defusedxml import minidom
......@@ -61,7 +62,11 @@ class APIView(View):
res = api_token.server_group.api_group.handle_from_data(
method, attrs, request.body, filter_meta
)
return self._success("", res)
if isinstance(res, dict):
return self._success("", res)
elif isinstance(res, str):
return redirect(res)
except NotImplementedError:
return self._error(
404, "xInfraBlueUnknownAPICall", f"The API call {method} is not known"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment