team-1/backend/src/qrcode_gen.py

32 lines
645 B
Python

import qrcode
import urllib.parse
from io import BytesIO
def create_login_url(base_uri: str, room_id: int, pin: int | None) -> str:
parsed = urllib.parse.urlparse(base_uri)
params = {
"room": room_id,
}
if pin is not None:
params["pin"] = pin
parsed = parsed._replace(path="join", query=urllib.parse.urlencode(params))
return urllib.parse.urlunparse(parsed)
def generate_qr(base_uri: str, room_id: int, pin: int | None) -> BytesIO:
url = create_login_url(base_uri, room_id, pin)
qr = qrcode.make(url)
out = BytesIO()
qr.save(out, format="jpeg")
out.seek(0)
return out