File: check-topics-request-header-in-img.py

package info (click to toggle)
thunderbird 1%3A140.4.0esr-1~deb13u1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 4,609,412 kB
  • sloc: cpp: 7,672,442; javascript: 5,901,613; ansic: 3,898,954; python: 1,413,343; xml: 653,997; asm: 462,286; java: 180,927; sh: 113,489; makefile: 20,460; perl: 14,288; objc: 13,059; yacc: 4,583; pascal: 3,352; lex: 1,720; ruby: 1,222; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (35 lines) | stat: -rw-r--r-- 1,504 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def main(request, response):
    """
    This file is intended to be requested twice to verify that the correct headers
    are included for images.
    1. Make an initial request for an img. The `sec-browsing-topics` header will
       be stored for step 2. The request will be redirected to an image.
    2. Make a request with the query parameter set. The stashed header from the
       first step will be returned in the response content.

    Parameters:
    `token` should be a unique UUID request parameter for the duration of this
    request. It will get stored in the server stash and will be used later in
    a query request.
    `query` should be a request parameter indicating the request would like
    to know the last `sec-browsing-topics` header with that token.
    """

    token = request.GET.first(b"token", None)
    is_query = request.GET.first(b"query", None) is not None
    topics_header = request.headers.get(b"sec-browsing-topics", b"NO_TOPICS_HEADER")

    queried_topics_header = b"NO_PREVIOUS_REQUEST"
    with request.server.stash.lock:
        value = request.server.stash.take(token)
        if value is not None:
            queried_topics_header = value
        if not is_query:
            request.server.stash.put(token, topics_header)

    if is_query:
        return (200, [(b"Access-Control-Allow-Origin", b"*")], queried_topics_header)

    headers = [(b"Location", "pixel.png"),
            (b"Access-Control-Allow-Origin", b"*")]
    return 301, headers, b""