Code Duplication    Length = 50-50 lines in 2 locations

src/AppBundle/PackageManager/Pypi.php 1 location

@@ 17-66 (lines=50) @@
14
use AppBundle\Entity\Package;
15
use GuzzleHttp\Client as GuzzleClient;
16
17
class Pypi implements PackageManager
18
{
19
    /**
20
     * @var string
21
     */
22
    private $packageVendor = 'https://pypi.python.org/pypi/';
23
24
    /**
25
     * @param Package $package
26
     *
27
     * @return Package
28
     */
29
    public function analyzePackage(Package $package)
30
    {
31
        $client = new GuzzleClient();
32
        $response = $client->get(
33
            $this->packageVendor . $package->getName() . '/json',
34
            [
35
                'exceptions' => false,
36
            ]
37
        );
38
39
        if ($response->getStatusCode() == 200) {
40
            $data = $this->parseJson((string) $response->getBody());
41
42
            $newestVersion = $data['info']['version'];
43
            $package->setLatestVersion($newestVersion);
44
            $package->setLastCheckAt(new \DateTime());
45
        }
46
47
        return $package;
48
    }
49
50
    /**
51
     * Parse JSON data.
52
     *
53
     * @param string $data
54
     *
55
     * @return mixed
56
     */
57
    private function parseJson($data)
58
    {
59
        $parsedData = json_decode($data, true);
60
        if ($parsedData === false) {
61
            throw new \RuntimeException('Unable to parse json file');
62
        }
63
64
        return $parsedData;
65
    }
66
}
67

src/AppBundle/PackageManager/Registry.php 1 location

@@ 17-66 (lines=50) @@
14
use AppBundle\Entity\Package;
15
use GuzzleHttp\Client as GuzzleClient;
16
17
class Registry implements PackageManager
18
{
19
    /**
20
     * @var string
21
     */
22
    private $packageVendor = 'https://registry.npmjs.org/';
23
24
    /**
25
     * @param Package $package
26
     *
27
     * @return Package
28
     */
29
    public function analyzePackage(Package $package)
30
    {
31
        $client = new GuzzleClient();
32
        $response = $client->get(
33
            $this->packageVendor . $package->getName(),
34
            [
35
                'exceptions' => false,
36
            ]
37
        );
38
39
        if ($response->getStatusCode() == 200) {
40
            $data = $this->parseJson((string) $response->getBody());
41
42
            $newestVersion = $data['dist-tags']['latest'];
43
            $package->setLatestVersion($newestVersion);
44
            $package->setLastCheckAt(new \DateTime());
45
        }
46
47
        return $package;
48
    }
49
50
    /**
51
     * Parse JSON data.
52
     *
53
     * @param string $data
54
     *
55
     * @return mixed
56
     */
57
    private function parseJson($data)
58
    {
59
        $parsedData = json_decode($data, true);
60
        if ($parsedData === false) {
61
            throw new \RuntimeException('Unable to parse json file');
62
        }
63
64
        return $parsedData;
65
    }
66
}
67