TransliteratorController::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 3
cp 0
crap 2
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Zvermafia\LaraTransliteration\Controllers;
4
5
use Exception;
6
use Zvermafia\Transliteration\Contracts\TransliteratorContract;
7
use Zvermafia\LaraTransliteration\Requests\TransliteratorRequest;
8
use Illuminate\Routing\Controller;
9
10
class TransliteratorController extends Controller
11
{
12
    /** @var TransliteratorContract */
13
    private $transliterator;
14
15
    /**
16
     * Create a controller instance.
17
     *
18
     * @param  TransliteratorContract  $transliterator
19
     */
20
    public function __construct(TransliteratorContract $transliterator)
21
    {
22
        $this->transliterator = $transliterator;
23
    }
24
25
    /**
26
     * Translit the given text to cyrillic version.
27
     *
28
     * @param  TransliteratorRequest  $request
29
     * @return \Illuminate\Http\Response
30
     */
31
    public function toCyrillic(TransliteratorRequest $request)
32
    {
33
        return $this->translit($request->input('text'));
34
    }
35
36
    /**
37
     * Translit the given text to latin version.
38
     *
39
     * @param  TransliteratorRequest  $request
40
     * @return \Illuminate\Http\Response
41
     */
42
    public function toLatin(TransliteratorRequest $request)
43
    {
44
        return $this->translit($request->input('text'), false);
45
    }
46
47
    /**
48
     * @param  string  $text
49
     * @param  bool  $isLatToCyr
50
     */
51
    private function translit($text, $isLatToCyr = true)
52
    {
53
        $data = [
54
            'code' => 200,
55
        ];
56
57
        try {
58
            $transliterator = $this->transliterator->setText($text);
59
            $transliterator = $isLatToCyr ? $transliterator->toCyrillic() : $transliterator->toLatin();
60
            $response = $transliterator->translit();
61
            $data['text'] = $response->getResult();
62
        } catch (Exception $e) {
63
            $data = [
64
                'code' => $e->getCode(),
65
                'text' => $e->getMessage(),
66
            ];
67
        }
68
69
        return response()->json(
70
            $data,
71
            $data['code'] === 200 ? 200 : 503
72
        );
73
    }
74
}
75