Completed
Pull Request — master (#48)
by Anton
01:25
created

CollectAction   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 3
dl 0
loc 29
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 6 1
A getRepositories() 0 19 2
1
<?php
2
3
/*
4
 * This file is part of Laravel Paket.
5
 *
6
 * (c) Anton Komarev <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Cog\Laravel\Paket\Http\Controllers\Api\Repositories;
15
16
use Illuminate\Contracts\Support\Responsable as ResponsableContract;
17
use MCStreetguy\ComposerParser\Factory as ComposerParser;
18
19
final class CollectAction
20
{
21
    public function __invoke(): ResponsableContract
22
    {
23
        $repositories = $this->getRepositories();
24
25
        return new CollectResponse($repositories);
26
    }
27
28
    private function getRepositories(): array
29
    {
30
        $jsonFile = ComposerParser::parseComposerJson(base_path('composer.json'));
31
32
        $repositories = $jsonFile->getRepositories();
33
        $output = [];
34
35
        foreach ($repositories as $repository) {
36
            $output[] = [
37
                'type' => $repository->getType(),
38
                'url' => $repository->getUrl(),
39
                // TODO: Add options & package
40
//                'options' => $repository->getOptions(),
41
//                'package' => $repository->getPackage(),
42
            ];
43
        }
44
45
        return $output;
46
    }
47
}
48