Test Setup Failed
Push — master ( f9eb8c...c313d3 )
by he
10:12 queued 03:59
created

CompressContent   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 39
rs 10
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 17 2
A compress() 0 3 1
A setZlib() 0 3 1
A headers() 0 7 1
1
<?php
2
3
namespace App\Http\Middleware;
4
5
use Illuminate\Http\JsonResponse;
6
use Illuminate\Http\Response;
7
8
class CompressContent
9
{
10
    public function handle($request, $next)
11
    {
12
        $response = $next($request);
13
14
        if ($response instanceof JsonResponse) {
15
            $compressedResponse = new Response();
16
            $compressed = $this->compress($response->getContent());
17
            $compressedResponse->setContent($compressed);
18
            $compressedResponse->withHeaders($this->headers());
19
            $compressedResponse->header('Content-Length', strlen($compressed));
20
21
            $this->setZlib();
22
23
            return $compressedResponse;
24
        }
25
26
        return $response;
27
    }
28
29
    private function setZlib(): void
30
    {
31
        ini_set('zlib.output_compression', 'Off');
32
    }
33
34
    private function headers()
35
    {
36
        return [
37
            'Content-Type' => 'application/x-download',
38
            'Content-Encoding'=> 'gzip',
39
            'Cache-Control' =>  'no-cache, no-store, max-age=0, must-revalidate',
40
            'Pragma' => 'no-cache',
41
        ];
42
    }
43
44
    private function compress($data)
45
    {
46
        return gzencode($data);
47
    }
48
}
49