TransliteratorController   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
dl 0
loc 62
ccs 0
cts 31
cp 0
rs 10
c 1
b 0
f 0
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A translit() 0 21 4
A toCyrillic() 0 3 1
A __construct() 0 3 1
A toLatin() 0 3 1
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