| 1234567891011121314151617181920212223242526272829303132333435363738394041 | # SPDX-License-Identifier: AGPL-3.0-or-later# lint: pylint"""Method ``http_accept_encoding``-------------------------------The ``http_accept_encoding`` method evaluates a request as the request of abot if the Accept-Encoding_ header ..- did not contain ``gzip`` AND ``deflate`` (if both values are missed)- did not contain ``text/html``.. _Accept-Encoding:   https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding"""# pylint: disable=unused-argumentfrom __future__ import annotationsfrom ipaddress import (    IPv4Network,    IPv6Network,)import flaskimport werkzeugfrom . import configfrom ._helpers import too_many_requestsdef filter_request(    network: IPv4Network | IPv6Network,    request: flask.Request,    cfg: config.Config,) -> werkzeug.Response | None:    accept_list = [l.strip() for l in request.headers.get('Accept-Encoding', '').split(',')]    if not ('gzip' in accept_list or 'deflate' in accept_list):        return too_many_requests(network, "HTTP header Accept-Encoding did not contain gzip nor deflate")    return None
 |