MoviesController   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 119
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 1
dl 119
loc 119
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setContainer() 5 5 1
A getMoviesAction() 4 4 1
A getMovieAction() 6 6 1
A patchMovieAction() 6 6 1
A deleteMovieAction() 6 6 1
A downloadMovieAction() 5 5 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace KI\PonthubBundle\Controller;
4
5
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
6
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
7
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
8
use Symfony\Component\DependencyInjection\ContainerInterface;
9
10 View Code Duplication
class MoviesController extends PonthubFileController
11
{
12
    public function setContainer(ContainerInterface $container = null)
13
    {
14
        parent::setContainer($container);
15
        $this->initialize('Movie', 'Ponthub');
16
    }
17
18
    /**
19
     * @ApiDoc(
20
     *  resource=true,
21
     *  description="Liste les films",
22
     *  output="KI\PonthubBundle\Entity\Movie",
23
     *  statusCodes={
24
     *   200="Requête traitée avec succès",
25
     *   401="Une authentification est nécessaire pour effectuer cette action",
26
     *   403="Pas les droits suffisants pour effectuer cette action",
27
     *   503="Service temporairement indisponible ou en maintenance",
28
     *  },
29
     *  section="Ponthub"
30
     * )
31
     * @Route("/movies")
32
     * @Method("GET")
33
     */
34
    public function getMoviesAction()
35
    {
36
        return $this->getAll();
37
    }
38
39
    /**
40
     * @ApiDoc(
41
     *  description="Retourne un film",
42
     *  output="KI\PonthubBundle\Entity\Movie",
43
     *  statusCodes={
44
     *   200="Requête traitée avec succès",
45
     *   401="Une authentification est nécessaire pour effectuer cette action",
46
     *   403="Pas les droits suffisants pour effectuer cette action",
47
     *   404="Ressource non trouvée",
48
     *   503="Service temporairement indisponible ou en maintenance",
49
     *  },
50
     *  section="Ponthub"
51
     * )
52
     * @Route("/movies/{slug}")
53
     * @Method("GET")
54
     */
55
    public function getMovieAction($slug)
56
    {
57
        $movie = $this->getOne($slug);
58
59
        return $this->json($movie);
60
    }
61
62
    /**
63
     * @ApiDoc(
64
     *  description="Modifie un film",
65
     *  input="KI\PonthubBundle\Form\MovieType",
66
     *  statusCodes={
67
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
68
     *   400="La syntaxe de la requête est erronée",
69
     *   401="Une authentification est nécessaire pour effectuer cette action",
70
     *   403="Pas les droits suffisants pour effectuer cette action",
71
     *   404="Ressource non trouvée",
72
     *   503="Service temporairement indisponible ou en maintenance",
73
     *  },
74
     *  section="Ponthub"
75
     * )
76
     * @Route("/movies/{slug}")
77
     * @Method("PATCH")
78
     */
79
    public function patchMovieAction($slug)
80
    {
81
        $data = $this->patch($slug, $this->is('JARDINIER'));
82
83
        return $this->formJson($data);
84
    }
85
86
    /**
87
     * @ApiDoc(
88
     *  description="Supprime un film",
89
     *  statusCodes={
90
     *   204="Requête traitée avec succès mais pas d’information à renvoyer",
91
     *   401="Une authentification est nécessaire pour effectuer cette action",
92
     *   403="Pas les droits suffisants pour effectuer cette action",
93
     *   404="Ressource non trouvée",
94
     *   503="Service temporairement indisponible ou en maintenance",
95
     *  },
96
     *  section="Publications"
97
     * )
98
     * @Route("/movies/{slug}")
99
     * @Method("DELETE")
100
     */
101
    public function deleteMovieAction($slug)
102
    {
103
        $this->delete($slug, $this->is('JARDINIER'));
104
105
        return $this->json(null, 204);
106
    }
107
108
    /**
109
     * @ApiDoc(
110
     *  description="Télécharge un fichier sur Ponthub, et log le téléchargement",
111
     *  statusCodes={
112
     *   200="Requête traitée avec succès mais pas d’information à renvoyer",
113
     *   401="Une authentification est nécessaire pour effectuer cette action",
114
     *   403="Pas les droits suffisants pour effectuer cette action",
115
     *   404="Ressource non trouvée",
116
     *   503="Service temporairement indisponible ou en maintenance",
117
     *  },
118
     *  section="Ponthub"
119
     * )
120
     * @Route("/movies/{slug}/download")
121
     * @Method("GET")
122
     */
123
    public function downloadMovieAction($slug)
124
    {
125
        $item = $this->getOne($slug, !$this->is('EXTERIEUR'));
126
        return $this->download($item);
127
    }
128
}
129