Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
29 / 29
FileGeneratorController
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
9
100.00% covered (success)
100.00%
29 / 29
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 generate
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
 dispatchFile
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
 handleError
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
5 / 5
 getErrors
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
5 / 5
1<?php
2
3namespace Qmp\Laravel\FileGenerator\Controllers;
4
5use Illuminate\Http\JsonResponse;
6use Illuminate\Http\Request;
7use Illuminate\Support\Facades\Log;
8use Qmp\Laravel\ApiFilterRequest\Middleware\FilterRequest;
9use Qmp\Laravel\FileGenerator\Config;
10use Qmp\Laravel\FileGenerator\Jobs\GenerateFile;
11use Qmp\Laravel\FileGenerator\Models\Error;
12use Qmp\Laravel\FileGenerator\Services\FileGenerator\Factory;
13use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
14
15class FileGeneratorController extends AbstractMicroServiceController
16{
17    public function __construct(Request $request)
18    {
19        $this->middleware(FilterRequest::class)->only('getErrors');
20
21        parent::__construct($request);
22    }
23
24    /**
25     * @param \Illuminate\Http\Request $request
26     * @return \Illuminate\Http\JsonResponse
27     */
28    public function generate(Request $request): JsonResponse
29    {
30        $request->validate([
31            'type' => 'required|string',
32            'output_path' => 'required|string',
33            'content' => 'required'
34        ]);
35
36        try {
37            $config = app()->make(Config::class, $request->all());
38            $generator = Factory::handle($config);
39
40            return response()->json(['status' => 'ok', 'path' => $generator->generate()], JsonResponse::HTTP_OK);
41
42        } catch (\Exception $e) {
43            Log::debug('Unable to generate file :' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
44            return response()->json(['status' => 'ko', 'errors' => $e->getMessage()], JsonResponse::HTTP_UNPROCESSABLE_ENTITY);
45        }
46    }
47
48    /**
49     * @param \Illuminate\Http\Request $request
50     * @return \Illuminate\Http\JsonResponse
51     */
52    public function dispatchFile(Request $request): JsonResponse
53    {
54        $request->validate([
55            'type' => 'required|string',
56            'output_path' => 'required|string',
57            'content' => 'required',
58            'pubsub.channel' => 'required|string',
59            'pubsub.message.action' => 'required|string'
60        ]);
61
62        try {
63            $config = app()->make(Config::class, $request->all());
64            GenerateFile::dispatch($config);
65
66            return response()->json(['status' => 'ok'], JsonResponse::HTTP_OK);
67
68        } catch (\Exception $e) {
69            Log::debug('Unable to dispatch file :' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
70            return response()->json(['status' => 'ko', 'errors' => $e->getMessage()], JsonResponse::HTTP_UNPROCESSABLE_ENTITY);
71        }
72    }
73
74    /**
75     * @param \Illuminate\Http\Request $request
76     * @return \Illuminate\Http\JsonResponse
77     */
78    public function handleError(Request $request): JsonResponse
79    {
80        try {
81            Error::create($request->all());
82
83            return response()->json(['status' => 'ok'], JsonResponse::HTTP_OK);
84        } catch (\Exception $e) {
85            Log::debug('Unable to handle error :' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
86            return response()->json(['status' => 'ko', 'errors' => $e->getMessage()], JsonResponse::HTTP_UNPROCESSABLE_ENTITY);
87        }
88    }
89
90    /**
91     * @param \Illuminate\Http\Request $request
92     * @return \Illuminate\Http\JsonResponse
93     */
94    public function getErrors(Request $request): JsonResponse
95    {
96        try {
97            $errors = Error::selectAll($request->get('filter_request'));
98
99            return response()->json($errors);
100        } catch (\Exception $e) {
101            Log::debug('Unable to get errors :' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
102            return response()->json(['status' => 'ko', 'errors' => $e->getMessage()], JsonResponse::HTTP_UNPROCESSABLE_ENTITY);
103        }
104    }
105}