livekit/livekit-server-sdk-python

Does this sdk have WebhookReceiver support?

Closed this issue · 2 comments

Hi, it's me again :)
Still a user of this package, and thanks again for making it.
I find myself in need of using the Webhook and unsure (can't see it anyway) if this package has support for webhooks

EDIT: I imagine I can simply look at the token, decode it to validate it and do what ever I need to do, even if not directly supported in this library

Hi again!

Handling the webhook is pretty framework specific. Here's an example with Flask:

@app.post('/livekit/webhook')
def livekit_webhook():
    token = request.headers.get('Authorization')
    if not token:
        abort(400)
    try:
        payload = jwt.decode(token, algorithms=['HS256'], key='<KEY>')
    except jwt.PyJWTError:
        abort(400)
    expected_hash = payload['sha256']
    calculated_hash = base64.b64encode(hashlib.sha256(request.data).digest()).decode()
    if calculated_hash != expected_hash:
        abort(400)
    event = request.json['event']
    # ...do something with event...
    return '', 204

We COULD add a utility function to this library to verify webhook signatures, however it isn't too difficult to write one yourself.

thanks for the quick reply @AlexJMohr
Yeah, I thought about that after I sent the message, and kinda guessed the same :)
I use django-rest-framework, but yeah, shouldn't be too tricky
Thanks for the example, I shall borrow some of it ;)