Passed
Branch development (223b82)
by Theodoros
02:58
created

IndexController::getResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 2
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\Econda\Communication\Controller;
9
10
use Spryker\Zed\Kernel\Communication\Controller\AbstractController;
11
use Symfony\Component\HttpFoundation\Request;
12
13
/**
14
 * @method \SprykerEco\Zed\Econda\Business\EcondaFacadeInterface getFacade()
15
 */
16
class IndexController extends AbstractController
17
{
18
19
    const CATEGORIES = 'categories';
20
    const PRODUCTS = 'products';
21
22
    /**
23
     * @param \Symfony\Component\HttpFoundation\Request $request
24
     *
25
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
26
     */
27
    public function categoryAction(Request $request)
28
    {
29
        return $this->getResponse($request, self::CATEGORIES);
30
    }
31
32
    /**
33
     * @param \Symfony\Component\HttpFoundation\Request $request
34
     *
35
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
36
     */
37
    public function productAction(Request $request)
38
    {
39
        return $this->getResponse($request, self::PRODUCTS);
40
    }
41
42
    /**
43
     * @param \Symfony\Component\HttpFoundation\Request $request
44
     * @param string $type
45
     *
46
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
47
     */
48
    private function getResponse(Request $request, $type)
49
    {
50
        $fileContent = $this->getFacade()->getFileContent($type, $this->getLocale($request));
51
52
        return $this->streamedResponse(
53
            function () use ($fileContent) {
54
                echo $fileContent;
55
            },
56
            200,
57
            ["Content-type" => "text/csv", 'Content-Disposition' => 'attachment; filename="$type.csv"']
58
        );
59
    }
60
61
    /**
62
     * @param \Symfony\Component\HttpFoundation\Request $request
63
     *
64
     * @return string
65
     */
66
    protected function getLocale(Request $request)
67
    {
68
        if ($request->query->get('locale') !== null) {
69
            return $request->query->get('locale');
70
        }
71
        return $this->getApplication()['locale'];
72
    }
73
74
}
75