• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / typo3-badges / 10868853238

15 Sep 2024 12:49AM UTC coverage: 98.95%. Remained the same
10868853238

push

github

web-flow
[TASK] Update all dependencies

471 of 476 relevant lines covered (98.95%)

7.48 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/Controller/ComposerBadgeController.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Symfony project "eliashaeussler/typo3-badges".
7
 *
8
 * Copyright (C) 2021-2024 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace App\Controller;
25

26
use App\Entity\Badge;
27
use App\Service\ApiService;
28
use Symfony\Component\HttpFoundation\Request;
29
use Symfony\Component\HttpFoundation\Response;
30
use Symfony\Component\Routing\Annotation\Route;
31

32
/**
33
 * ComposerBadgeController.
34
 *
35
 * @author Elias Häußler <elias@haeussler.dev>
36
 * @license GPL-3.0-or-later
37
 */
38
#[Route(
39
    path: '/badge/{extension}/composer/{provider?}.{_format}',
40
    name: 'badge.composer',
41
    requirements: [
42
        'extension' => '[a-z0-9_]+',
43
        '_format' => 'json|svg',
44
    ],
45
    options: [
46
        'title' => 'Composer',
47
        'description' => 'Get JSON data for Composer name.',
48
    ],
49
    methods: ['GET'],
50
    format: 'json',
51
)]
52
final class ComposerBadgeController extends AbstractBadgeController
53
{
54
    public function __construct(
2✔
55
        private readonly ApiService $apiService,
56
    ) {}
2✔
57

58
    public function __invoke(Request $request, string $extension, ?string $provider = null): Response
2✔
59
    {
60
        $extensionMetadata = $this->apiService->getExtensionMetadata($extension);
2✔
61
        $composerName = $extensionMetadata[0]['meta']['composer_name'] ?? null;
2✔
62

63
        return $this->getBadgeResponse(
2✔
64
            $request,
2✔
65
            Badge::forComposerName($composerName),
2✔
66
            $provider,
2✔
67
            $extensionMetadata->getExpiryDate(),
2✔
68
        );
2✔
69
    }
70
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc