Video Component Reference
This section documents all modules related to the Video component (live streaming, rooms, chat, interactive features).
Webapp Module
The webapp module contains the Vue.js web application for video streaming and interactive features. See Video Component Frontend - Web Application for detailed frontend documentation.
Live Features
Core Live Modules
- class eventyay.features.live.consumers.MainConsumer(*args, **kwargs)
Bases:
AsyncJsonWebsocketConsumer- build_response(status, data)
- async connect()
- async classmethod decode_json(text_data)
- async disconnect(close_code)
Called when a WebSocket connection is closed.
- async dispatch(message)
Works out what to do with a message.
- async receive_json(content, **kargs)
Called with decoded JSON content.
- async send_error(code, message=None, close=False, details=None)
- async send_json(content, close=False)
Encode the given content as JSON and send it to the client.
- async send_success(data=None, close=False)
- eventyay.features.live.decorators.command(event_name)
Registers a function to be the handler of a specific command within a module.
- eventyay.features.live.decorators.event(event_name, refresh_user=False)
Registers a function to be the handler of a specific event within a module.
- eventyay.features.live.decorators.require_event_permission(permission: Permission)
- eventyay.features.live.decorators.room_action(permission_required: Permission | List[Permission] = None, module_required=None)
Wraps a command on a live module. Requires either
roomorchannelto be set in the request body.- Parameters:
permission_required – If set, the decorator will return an error if the user is not logged in or does not have the specified permission.
module_required – If set, the decorator will return an error if the room does not contain a module of the given type. If a module is found,
self.module_configwill be set.
- Returns:
- exception eventyay.features.live.exceptions.ConsumerException(code, message=None)
Bases:
Exception
- class eventyay.features.live.views.AppView(**kwargs)
Bases:
ViewThis view renders the main HTML. It is not used during development but only during production usage.
- get(request, *args, **kwargs)
- class eventyay.features.live.views.BBBCSSView(**kwargs)
Bases:
TemplateView- content_type = 'text/css'
- dispatch(request, *args, **kwargs)
- get_context_data(**kwargs)
- template_name = 'live/bbb.css'
- class eventyay.features.live.views.CustomCSSView(**kwargs)
Bases:
View- dispatch(request, *args, **kwargs)
- get(request, *args, **kwargs)
- class eventyay.features.live.views.HealthcheckView(**kwargs)
Bases:
ViewThis view renders the main HTML. It is not used during development but only during production usage.
- async get(request, *args, **kwargs)
Interactive Modules
- class eventyay.features.live.modules.announcement.AnnouncementModule(consumer)
Bases:
BaseModule- async create_announcement(body)
- async list_announcements(body)
- prefix = 'announcement'
- async push_announce(body)
- async update_announcement(body)
- class eventyay.features.live.modules.auth.AuthModule(consumer)
Bases:
BaseModule- async admin_update(body)
- async ban(body)
- async block(body)
- async delete(body)
- async dispatch_disconnect(close_code)
- async fetch(body)
- async kiosk_create(body)
- async kiosk_fetch(body)
- async list(body)
- async list_blocked(body)
- async login(body)
- async online_state(body)
- prefix = 'user'
- async reactivate(body)
- async silence(body)
- async social_connect(body)
- async unblock(body)
- async update(body)
- async user_list(body)
- class eventyay.features.live.modules.base.BaseModule(consumer)
Bases:
object- async dispatch_command(content)
- async dispatch_event(content)
- prefix = None
- class eventyay.features.live.modules.base.BaseModuleMeta(clsname, bases, attrs)
Bases:
type
- class eventyay.features.live.modules.event.EventModule(consumer)
Bases:
BaseModule- async attendee_list_generate(body)
- async attendee_session_list_generate(body)
- async auditlog_get(body)
- async chat_history_generate(body)
- async config_get(body)
- async config_patch(body)
- prefix = 'event'
- async push_event_update(body)
- async push_schedule_update(body)
- async push_user_count_change(body)
- async question_history_generate(body)
- async question_poll_generate(body)
- async report_generate(body)
- async report_status(body)
- async roomviews_generate(body)
- async sessionviews_generate(body)
- async tokens_generate(body)
- async views_generate(body)
- class eventyay.features.live.modules.bbb.BBBModule(*args, **kwargs)
Bases:
BaseModule- async call_url(body)
- prefix = 'bbb'
- async recordings(body)
- async room_url(body)
- class eventyay.features.live.modules.chat.ChatModule(*args, **kwargs)
Bases:
BaseModule- async direct_create(body)
- async dispatch_command(content)
- async dispatch_disconnect(close_code)
- async fetch(body)
- async join(body)
- async leave(body)
- async mark_read(body)
- prefix = 'chat'
- async publish_event(body)
- async publish_notification(body)
- async publish_read_pointers(body)
- async publish_unread_pointers(body)
- async react(body)
- async send(body)
- async subscribe(body)
- async unsubscribe(body)
- eventyay.features.live.modules.chat.channel_action(room_permission_required: Permission = None, room_module_required=None, require_membership=True)
Wraps a command that works on a chat channel regardless of whether the channel is tied to a room or not. If it is tied to a room, the
room_permisison_requiredandroom_module_requiredoptions are enforced.require_membershipenforces the user is a member of a channel for an action.
- class eventyay.features.live.modules.exhibition.ExhibitionModule(*args, **kwargs)
Bases:
BaseModule- async contact(body)
- async contact_accept(body)
- async contact_accepted(body)
- async contact_cancel(body)
- async contact_request(body)
- async contact_request_cancel(body)
- async delete(body)
- async dispatch_disconnect(close_code)
- async exhibition_data_update(body)
- async get(body)
- async list(body)
- async list_all(body)
- async patch(body)
- prefix = 'exhibition'
- async staffed_by_user(body)
- class eventyay.features.live.modules.januscall.JanusCallModule(*args, **kwargs)
Bases:
BaseModule- async channel_url(body)
- async identify(body)
- prefix = 'januscall'
- async room_url(body)
- async roulette_url(body)
- class eventyay.features.live.modules.poll.PollModule(consumer)
Bases:
BaseModule- async create_poll(body)
- async delete_poll(body)
- get_group_for_state(state)
- async list_polls(body)
- async pin_poll(body)
- prefix = 'poll'
- async push_delete(body)
- async push_pin(body)
- async push_poll(body)
- async push_unpin(body)
- async unpin_poll(body)
- async update_poll(body)
- async vote(body)
- class eventyay.features.live.modules.poster.PosterModule(*args, **kwargs)
Bases:
BaseModule- async delete(body)
- async get(body)
- async list(body)
- async list_all(body)
- async patch(body)
- prefix = 'poster'
- async presented_by_user(body)
- async unvote(body)
- async vote(body)
- class eventyay.features.live.modules.question.QuestionModule(consumer)
Bases:
BaseModule- async ask_question(body)
- async delete_question(body)
- async list_questions(body)
- async pin_question(body)
- prefix = 'question'
- async push_delete(body)
- async push_pin(body)
- async push_question(body)
- async push_unpin(body)
- async unpin_question(body)
- async update_question(body)
- async vote(body)
- class eventyay.features.live.modules.room.RoomModule(*args, **kwargs)
Bases:
BaseModule- async change_schedule_data(body)
- async config_get(body)
- async config_patch(body)
- async config_reorder(body)
- async create_room(body)
- async delete(body)
- async dispatch_disconnect(close_code)
- async enter_room(body)
- async invite_anonymous_link(body)
- async leave_room(body)
- prefix = 'room'
- async push_reaction(body)
- async push_room_delete(body)
- async push_room_info(body)
- async push_schedule_data(body)
- async push_viewer_added(body)
- async push_viewer_removed(body)
- async rooms_list(body)
- async send_reaction(body)
- class eventyay.features.live.modules.roulette.RouletteModule(*args, **kwargs)
Bases:
BaseModule- async dispatch_disconnect(close_code)
- async hangup(body)
- prefix = 'roulette'
- async publish_hangup(body)
- async publish_match_found(body)
- async reconnect(body)
- async start(body)
- async stop(body)
- class eventyay.features.live.modules.zoom.ZoomModule(*args, **kwargs)
Bases:
BaseModule- prefix = 'zoom'
- async room_url(body)