tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

deprecated-broadcast-channel.py (975B)


      1 import json
      2 import time
      3 def main(request, response):
      4    uid = request.GET.first(b"uid")
      5    name = request.GET.first(b"name")
      6    time.sleep(0.1)
      7 
      8    messagesByName = []
      9    if request.method == 'POST':
     10        with request.server.stash.lock:
     11            messages = request.server.stash.take(uid) or {}
     12            if name in messages:
     13                messagesByName = messages[name]
     14 
     15            messagesByName.append(json.loads(request.body))
     16            messages[name] = messagesByName
     17            request.server.stash.put(uid, messages)
     18        response.status = 204
     19    else:
     20        with request.server.stash.lock:
     21            messages = request.server.stash.take(uid) or {}
     22            if name in messages:
     23                messagesByName = messages[name]
     24 
     25            request.server.stash.put(uid, messages)
     26            response.status = 200
     27            response.headers['Content-Type'] = 'application/json'
     28            response.content = json.dumps(messagesByName)