-
Notifications
You must be signed in to change notification settings - Fork 0
/
Package.php
75 lines (60 loc) · 1.13 KB
/
Package.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* Created by PhpStorm.
* User: andy
* Date: 11/01/14
* Time: 16:16
*/
use Curl\Downloader;
class Package {
/**
* @var PackageMeta
*/
private $_meta;
private $_outDir;
private $_repoUrl;
function __construct($meta, $outDir, $repoUrl)
{
$this->_meta = $meta;
$this->_outDir = $outDir;
$this->_repoUrl = $repoUrl;
}
/**
* @return string
*/
private function getFilePath()
{
return $this->_outDir . "/" . $this->_meta->getLocation();
}
/**
* @return string
*/
private function getUrl()
{
return $this->_repoUrl . "/" . $this->_meta->getLocation();
}
public function onDisk()
{
if (!file_exists($this->getFilePath()))
return false;
if (!is_file($this->getFilePath()))
return false;
$sizeOnDisk = filesize($this->getFilePath());
if ($sizeOnDisk != $this->_meta->getSize())
return false;
return true;
}
/**
* @return \PackageMeta
*/
public function getMeta()
{
return $this->_meta;
}
public function download($label)
{
$downloader = new Downloader($this->getUrl());
$hooker = new FileHooker($this->getFilePath(), $label);
$downloader->download($hooker);
}
}