Test Setup Failed
Push — develop ( 04b246...d52f7e )
by Nikita
10:40
created

LaravelModulesRepository::getCached()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 4
c 1
b 0
f 1
dl 0
loc 7
rs 10
cc 2
nc 2
nop 0
1
<?php
2
3
namespace Gameap\Repositories\Modules;
4
5
use Gameap\Exceptions\GameapException;
6
use Gameap\Models\Modules\LaravelModule;
7
use Illuminate\Contracts\Foundation\Application;
8
use Nwidart\Modules\Contracts\RepositoryInterface;
9
use Nwidart\Modules\Module;
10
11
class LaravelModulesRepository
12
{
13
    /** @var Application */
14
    private $laravel;
15
16
    public function __construct(Application $laravel)
17
    {
18
        $this->laravel = $laravel;
19
    }
20
21
    public function getModulesVersions(): array
22
    {
23
        $modules = [];
24
        /** @var Module $module */
25
        foreach ($this->getNvidardRepository()->all() as $module) {
26
            $attributes = $module->json()->getAttributes();
27
            $modules[$module->getLowerName()] = $attributes['version'] ?? '';
28
        }
29
30
        return $modules;
31
    }
32
33
    public function getCached(): array
34
    {
35
        $modules = [];
36
        foreach ($this->getNvidardRepository()->getCached() as $module) {
37
            $modules[] = $this->denormalizeLaravelModule($module);
38
        }
39
        return $modules;
40
    }
41
42
    public function delete(string $module): bool
43
    {
44
        return $this->getNvidardRepository()->delete($module);
45
    }
46
47
    private function getNvidardRepository(): RepositoryInterface
48
    {
49
        if (!$this->laravel->has('modules')) {
50
            throw new GameapException('Unable to find modules container');
51
        }
52
53
        return $this->laravel->get('modules');
54
    }
55
56
    private function denormalizeLaravelModule(array $module): LaravelModule
57
    {
58
        $laravelModule = new LaravelModule();
59
60
        $laravelModule->id = $module['alias'];
61
        $laravelModule->name = $module['name'];
62
        $laravelModule->description = $module['description'];
63
        $laravelModule->tags = $module['keywords'];
64
65
        return $laravelModule;
66
    }
67
}
68