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

mborne / git-manager / 23617025857

26 Mar 2026 08:42PM UTC coverage: 51.743% (-5.7%) from 57.44%
23617025857

push

github

web-flow
Merge pull request #44 from mborne/export-csv

add CSV export

0 of 37 new or added lines in 2 files covered. (0.0%)

193 of 373 relevant lines covered (51.74%)

0.52 hits per line

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

0.0
/src/Controller/Api/ProjectController.php
1
<?php
2

3
namespace MBO\GitManager\Controller\Api;
4

5
use MBO\GitManager\Export\CSV;
6
use MBO\GitManager\Repository\ProjectRepository;
7
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
8
use Symfony\Component\HttpFoundation\Response;
9
use Symfony\Component\Routing\Annotation\Route;
10
use Symfony\Component\Uid\Uuid;
11

12
class ProjectController extends AbstractController
13
{
14
    #[Route('/api/projects', name: 'api_project_list')]
15
    public function list(
16
        ProjectRepository $repository,
17
    ): Response {
18
        $projects = $repository->findAll();
×
19

20
        return $this->json($projects);
×
21
    }
22

23
    #[Route('/api/projects.csv', name: 'api_project_list_csv', priority: 10)]
24
    public function listCsv(ProjectRepository $repository, CSV $csv): Response
25
    {
NEW
26
        $content = $csv->exportProjects($repository->findAll());
×
27

NEW
28
        $response = new Response($content);
×
NEW
29
        $response->headers->set('Content-Type', 'text/csv; charset=UTF-8');
×
NEW
30
        $response->headers->set('Content-Disposition', 'attachment; filename="projects.csv"');
×
31

NEW
32
        return $response;
×
33
    }
34

35
    #[Route('/api/projects/{id}', name: 'api_project_get')]
36
    public function get(
37
        ProjectRepository $repository,
38
        Uuid $id,
39
    ): Response {
40
        $project = $repository->find($id);
×
41
        if (is_null($project)) {
×
42
            return $this->json([
×
43
                'message' => 'Not found',
×
44
            ], 404);
×
45
        }
46

47
        return $this->json($project);
×
48
    }
49
}
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

© 2026 Coveralls, Inc