コード例 #1
0
ファイル: tests.py プロジェクト: allanice001/django
    def test_compress_response(self):
        """
        Tests that ETag is changed after gzip compression is performed.
        """
        request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
        response = GZipMiddleware().process_response(request,
            CommonMiddleware().process_response(request,
                HttpResponse(self.compressible_string)))
        gzip_etag = response.get('ETag')

        request = self.rf.get('/', HTTP_ACCEPT_ENCODING='')
        response = GZipMiddleware().process_response(request,
            CommonMiddleware().process_response(request,
                HttpResponse(self.compressible_string)))
        nogzip_etag = response.get('ETag')

        self.assertNotEqual(gzip_etag, nogzip_etag)
コード例 #2
0
ファイル: tests.py プロジェクト: allanice001/django
 def test_no_compress_compressed_response(self):
     """
     Tests that compression isn't performed on responses that are already compressed.
     """
     self.resp['Content-Encoding'] = 'deflate'
     r = GZipMiddleware().process_response(self.req, self.resp)
     self.assertEqual(r.content, self.compressible_string)
     self.assertEqual(r.get('Content-Encoding'), 'deflate')
コード例 #3
0
ファイル: tests.py プロジェクト: allanice001/django
 def test_no_compress_uncompressible_response(self):
     """
     Tests that compression isn't performed on responses with uncompressible content.
     """
     self.resp.content = self.uncompressible_string
     r = GZipMiddleware().process_response(self.req, self.resp)
     self.assertEqual(r.content, self.uncompressible_string)
     self.assertEqual(r.get('Content-Encoding'), None)
コード例 #4
0
ファイル: tests.py プロジェクト: allanice001/django
 def test_compress_streaming_response_unicode(self):
     """
     Tests that compression is performed on responses with streaming Unicode content.
     """
     r = GZipMiddleware().process_response(self.req, self.stream_resp_unicode)
     self.assertEqual(self.decompress(b''.join(r)), b''.join(x.encode('utf-8') for x in self.sequence_unicode))
     self.assertEqual(r.get('Content-Encoding'), 'gzip')
     self.assertFalse(r.has_header('Content-Length'))
コード例 #5
0
ファイル: tests.py プロジェクト: allanice001/django
 def test_compress_response(self):
     """
     Tests that compression is performed on responses with compressible content.
     """
     r = GZipMiddleware().process_response(self.req, self.resp)
     self.assertEqual(self.decompress(r.content), self.compressible_string)
     self.assertEqual(r.get('Content-Encoding'), 'gzip')
     self.assertEqual(r.get('Content-Length'), str(len(r.content)))
コード例 #6
0
ファイル: tests.py プロジェクト: zknowz/django
 def test_no_compress_short_response(self):
     """
     Compression isn't performed on responses with short content.
     """
     self.resp.content = self.short_string
     r = GZipMiddleware().process_response(self.req, self.resp)
     self.assertEqual(r.content, self.short_string)
     self.assertIsNone(r.get('Content-Encoding'))
コード例 #7
0
ファイル: tests.py プロジェクト: zknowz/django
 def test_compress_streaming_response(self):
     """
     Compression is performed on responses with streaming content.
     """
     r = GZipMiddleware().process_response(self.req, self.stream_resp)
     self.assertEqual(self.decompress(b''.join(r)), b''.join(self.sequence))
     self.assertEqual(r.get('Content-Encoding'), 'gzip')
     self.assertFalse(r.has_header('Content-Length'))
コード例 #8
0
ファイル: tests.py プロジェクト: thibaudcolas/django
 def test_compress_non_200_response(self):
     """
     Compression is performed on responses with a status other than 200
     (#10762).
     """
     self.resp.status_code = 404
     r = GZipMiddleware(self.get_response)(self.req)
     self.assertEqual(self.decompress(r.content), self.compressible_string)
     self.assertEqual(r.get("Content-Encoding"), "gzip")
コード例 #9
0
 def test_compress_non_200_response(self):
     """
     Tests that compression is performed on responses with a status other than 200.
     See #10762.
     """
     self.resp.status_code = 404
     r = GZipMiddleware().process_response(self.req, self.resp)
     self.assertEqual(self.decompress(r.content), self.compressible_string)
     self.assertEqual(r.get('Content-Encoding'), 'gzip')
コード例 #10
0
ファイル: tests.py プロジェクト: DYL521/django_source
 def test_weak_etag_not_modified(self):
     """
     GZipMiddleware doesn't modify a weak ETag.
     """
     request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
     response = HttpResponse(self.compressible_string)
     response['ETag'] = 'W/"eggs"'
     gzip_response = GZipMiddleware().process_response(request, response)
     self.assertEqual(gzip_response['ETag'], 'W/"eggs"')
コード例 #11
0
ファイル: tests.py プロジェクト: Gautier/django_old
 def test_no_compress_ie_js_requests(self):
     """
     Tests that compression isn't performed on JavaScript requests from Internet Explorer.
     """
     self.req.META['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)'
     self.resp['Content-Type'] = 'application/javascript; charset=UTF-8'
     r = GZipMiddleware().process_response(self.req, self.resp)
     self.assertEqual(r.content, self.compressible_string)
     self.assertEqual(r.get('Content-Encoding'), None)
コード例 #12
0
ファイル: tests.py プロジェクト: DYL521/django_source
 def test_strong_etag_modified(self):
     """
     GZipMiddleware makes a strong ETag weak.
     """
     request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
     response = HttpResponse(self.compressible_string)
     response['ETag'] = '"eggs"'
     gzip_response = GZipMiddleware().process_response(request, response)
     self.assertEqual(gzip_response['ETag'], 'W/"eggs"')
コード例 #13
0
def gzip_action(func):
    gz = GZipMiddleware()

    @wraps(func)
    def wrapper(self, request, *args, **kwargs):
        resp = func(self, request, *args, **kwargs)
        return gz.process_response(request, resp)

    if getattr(settings, 'GZIP_MODELS'):
        return wrapper
    return func
コード例 #14
0
ファイル: tests.py プロジェクト: DYL521/django_source
 def test_compress_file_response(self):
     """
     Compression is performed on FileResponse.
     """
     with open(__file__, 'rb') as file1:
         file_resp = FileResponse(file1)
         file_resp['Content-Type'] = 'text/html; charset=UTF-8'
         r = GZipMiddleware().process_response(self.req, file_resp)
         with open(__file__, 'rb') as file2:
             self.assertEqual(self.decompress(b''.join(r)), file2.read())
         self.assertEqual(r.get('Content-Encoding'), 'gzip')
         self.assertIsNot(r.file_to_stream, file1)
コード例 #15
0
    def test_weak_etag_not_modified(self):
        """
        GZipMiddleware doesn't modify a weak ETag.
        """
        def get_response(req):
            response = HttpResponse(self.compressible_string)
            response.headers['ETag'] = 'W/"eggs"'
            return response

        request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
        gzip_response = GZipMiddleware(get_response)(request)
        self.assertEqual(gzip_response.headers['ETag'], 'W/"eggs"')
コード例 #16
0
ファイル: tests.py プロジェクト: thibaudcolas/django
    def test_strong_etag_modified(self):
        """
        GZipMiddleware makes a strong ETag weak.
        """
        def get_response(req):
            response = HttpResponse(self.compressible_string)
            response.headers["ETag"] = '"eggs"'
            return response

        request = self.rf.get("/", HTTP_ACCEPT_ENCODING="gzip, deflate")
        gzip_response = GZipMiddleware(get_response)(request)
        self.assertEqual(gzip_response.headers["ETag"], 'W/"eggs"')
コード例 #17
0
    def test_compress_streaming_response(self):
        """
        Compression is performed on responses with streaming content.
        """
        def get_stream_response(request):
            resp = StreamingHttpResponse(self.sequence)
            resp['Content-Type'] = 'text/html; charset=UTF-8'
            return resp

        r = GZipMiddleware(get_stream_response)(self.req)
        self.assertEqual(self.decompress(b''.join(r)), b''.join(self.sequence))
        self.assertEqual(r.get('Content-Encoding'), 'gzip')
        self.assertFalse(r.has_header('Content-Length'))
コード例 #18
0
ファイル: tests.py プロジェクト: thibaudcolas/django
    def test_compress_streaming_response(self):
        """
        Compression is performed on responses with streaming content.
        """
        def get_stream_response(request):
            resp = StreamingHttpResponse(self.sequence)
            resp["Content-Type"] = "text/html; charset=UTF-8"
            return resp

        r = GZipMiddleware(get_stream_response)(self.req)
        self.assertEqual(self.decompress(b"".join(r)), b"".join(self.sequence))
        self.assertEqual(r.get("Content-Encoding"), "gzip")
        self.assertFalse(r.has_header("Content-Length"))
コード例 #19
0
ファイル: tests.py プロジェクト: thibaudcolas/django
    def test_compress_file_response(self):
        """
        Compression is performed on FileResponse.
        """
        with open(__file__, "rb") as file1:

            def get_response(req):
                file_resp = FileResponse(file1)
                file_resp["Content-Type"] = "text/html; charset=UTF-8"
                return file_resp

            r = GZipMiddleware(get_response)(self.req)
            with open(__file__, "rb") as file2:
                self.assertEqual(self.decompress(b"".join(r)), file2.read())
            self.assertEqual(r.get("Content-Encoding"), "gzip")
            self.assertIsNot(r.file_to_stream, file1)
コード例 #20
0
    def test_middleware_wont_compress_if_client_not_accept(self):
        fake_request = FakeLegacyRequest()
        response_content = UTF8_LOREM_IPSUM_IN_CZECH
        fake_response = FakeResponse(content=response_content)

        compression_middleware = CompressionMiddleware()
        response = compression_middleware.process_response(
            fake_request, fake_response)

        django_gzip_middleware = GZipMiddleware()
        gzip_response = django_gzip_middleware.process_response(
            fake_request, fake_response)

        self.assertEqual(response_content,
                         response.content.decode(encoding='utf-8'))
        self.assertEqual(response.get('Vary'), 'Accept-Encoding')
コード例 #21
0
    def test_middleware_wont_compress_if_response_is_already_compressed(self):
        fake_request = FakeRequestAcceptsBrotli()
        response_content = UTF8_LOREM_IPSUM_IN_CZECH
        fake_response = FakeResponse(content=response_content)

        brotli_middleware = BrotliMiddleware()
        django_gzip_middleware = GZipMiddleware()

        gzip_response = django_gzip_middleware.process_response(
            fake_request, fake_response)
        brotli_response = brotli_middleware.process_response(
            fake_request, gzip_response)

        self.assertEqual(
            response_content,
            gzip.decompress(brotli_response.content).decode(encoding='utf-8'))
コード例 #22
0
ファイル: tests.py プロジェクト: DYL521/django_source
 def test_etag_match(self):
     """
     GZipMiddleware allows 304 Not Modified responses.
     """
     request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
     response = GZipMiddleware().process_response(
         request,
         ConditionalGetMiddleware().process_response(request, HttpResponse(self.compressible_string))
     )
     gzip_etag = response['ETag']
     next_request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate', HTTP_IF_NONE_MATCH=gzip_etag)
     next_response = ConditionalGetMiddleware().process_response(
         next_request,
         HttpResponse(self.compressible_string)
     )
     self.assertEqual(next_response.status_code, 304)
コード例 #23
0
    def test_etag_match(self):
        """
        GZipMiddleware allows 304 Not Modified responses.
        """
        def get_response(req):
            response = HttpResponse(self.compressible_string)
            return response

        def get_cond_response(req):
            return ConditionalGetMiddleware(get_response)(req)

        request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
        response = GZipMiddleware(get_cond_response)(request)
        gzip_etag = response.headers['ETag']
        next_request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate', HTTP_IF_NONE_MATCH=gzip_etag)
        next_response = ConditionalGetMiddleware(get_response)(next_request)
        self.assertEqual(next_response.status_code, 304)
コード例 #24
0
ファイル: utils.py プロジェクト: demiurg/geokit
    def wrapped_function(request, layer_name, z, x, y):
        x, y, z = int(x), int(y), int(z)

        tile_cache_path = os.path.realpath(settings.STATIC_ROOT + '/tiles')

        layer = Layer.objects.get(name=layer_name)
        name = layer.query_hash()
        tile_path = tile_cache_path + '/{}/{}/{}/{}.pbf'.format(name, z, x, y)

        if not os.path.isfile(tile_path):
            response = func(request, name, z, x, y)
        else:
            print "Sending cached tile..."
            response = HttpResponse(content_type='application/x-protobuf')
            with open(tile_path, 'rb') as f:
                response.write(f.read())

            gzip_middleware = GZipMiddleware()
            response = gzip_middleware.process_response(request, response)

        return response
コード例 #25
0
    def get(self, request, *args, **kwargs):
        meetings = self.get_meetings()
        meetings_dict = []

        # Eager load all regions to reference below.
        regions = Region.objects.all().prefetch_related("children")

        for meeting in meetings:
            meeting_types = list(
                meeting.types.values_list("spec_code", flat=True))

            group_info = ""
            if len(meeting.district):
                location = f"{meeting.meeting_location.title} (D{meeting.district})"
                group_info = f"D{meeting.district}"
            else:
                location = meeting.meeting_location.title

            gso_number = getattr(meeting.group, "gso_number", None)
            if gso_number and len(gso_number):
                group_info += f" / GSO #{gso_number}"

            region_ancestors = list(
                regions.get(
                    id=meeting.meeting_location.region.id).get_ancestors(
                        include_self=True).values_list("name", flat=True))

            notes = meeting.details

            meetings_dict.append({
                "name":
                meeting.title,
                "slug":
                meeting.slug,
                "notes":
                notes,
                "updated":
                f"{meeting.last_published_at if meeting.last_published_at else datetime.datetime.now():%Y-%m-%d %H:%M:%S}",
                "url":
                f"{settings.BASE_URL}{meeting.url_path}",
                "day":
                meeting.day_of_week,
                "time":
                f"{meeting.start_time:%H:%M}",
                "end_time":
                f"{meeting.end_time:%H:%M}",
                "conference_url":
                meeting.conference_url,
                "conference_phone":
                meeting.conference_phone,
                "types":
                meeting_types,
                "location":
                location,
                "formatted_address":
                meeting.meeting_location.formatted_address,
                "latitude":
                meeting.meeting_location.lat,
                "longitude":
                meeting.meeting_location.lng,
                "regions":
                region_ancestors,
                "group":
                group_info,
                "paypal":
                f"https://paypal.me/{meeting.paypal}"
                if len(meeting.paypal) else "",
                "venmo":
                meeting.venmo,
            })

        response = GZipMiddleware().process_response(
            request,
            HttpResponse(json.dumps(meetings_dict),
                         content_type="application/json"))

        return response
コード例 #26
0
def gzip_response_content(request, response):
    GZipMiddleware().process_response(request, response)
コード例 #27
0
ファイル: views.py プロジェクト: imdangodaane/latteProject-BE
import gzip, json, base64, jwt
from datetime import datetime, timedelta, date
from django.shortcuts import get_object_or_404
from django.forms.models import model_to_dict
from django.utils import timezone
from rest_framework import viewsets, generics
from rest_framework.response import Response
from rest_framework.decorators import action
from .models import ItemDb
from .serializers import ItemDbSerializer
from django.middleware.gzip import GZipMiddleware
from django.http import FileResponse, HttpResponse

gzip_middleware = GZipMiddleware()


def data_to_gzip(data):
    file_name = 'gz-warehouse/items.gz'
    with gzip.GzipFile(file_name, 'w') as fout:
        fout.write(json.dumps(data).encode('utf-8'))
    return file_name


class ItemsList(generics.ListAPIView):
    # queryset = ItemDb.objects.all()

    def get(self, request):
        items = ItemDb.objects.all()
        serializer = ItemDbSerializer(items, many=True)
        res_data = list(serializer.data)
        gzip_file_name = data_to_gzip(res_data)
コード例 #28
0
 def __init__(self, *args, **kwargs):
     self.gzip_middleware = GZipMiddleware(*args, **kwargs) 
コード例 #29
0
def full_process_response(request, response, gzip=False):
    if gzip:
        response = GZipMiddleware().process_response(request, response)
    response = EsiHeaderMiddleware().process_response(request, response)
    response = IncludeEsiMiddleware().process_response(request, response)
    return response