Improved Accept header middleware

 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
def parse_accept_header(accept):
    """Parse the Accept header *accept*, returning a list with pairs of
    (media_type, q_value), ordered by q values.
    """
    result = []
    for media_range in accept.split(","):
        parts = media_range.split(";")
        media_type = parts.pop(0)
        media_params = []
        q = 1.0
        for part in parts:
            (key, value) = part.lstrip().split("=", 1)
            if key == "q":
                q = float(value)
            else:
                media_params.append((key, value))
        result.append((media_type, tuple(media_params), q))
    result.sort(lambda x, y: -cmp(x[2], y[2]))
    return result

class AcceptMiddleware(object):
    def process_request(self, request):
        accept = parse_accept_header(request.META.get("HTTP_ACCEPT", ""))
        request.accept = accept
        request.accepted_types = map(lambda (t, p, q): t, accept)

More like this

  1. Accept Header Middleware by kioopi 3 years, 9 months ago
  2. Improved Accept middleware with webkit workaround by raven_nevermore 1 year, 2 months ago
  3. Add Extra Headers to Test Client Requests by luftyluft 3 years, 7 months ago
  4. Ignore HTTP Accept-Language headers by fonso 4 years, 9 months ago
  5. Timing Django Requests by metajack 3 years, 8 months ago

Comments

(Forgotten your password?)