@@ 17-118 (lines=102) @@ | ||
14 | use Psr\Log\LogLevel; |
|
15 | use Symfony\Component\Process\Exception\ProcessFailedException; |
|
16 | ||
17 | class Gzip implements CompressorInterface, DeCompressorInterface, LoggerAwareInterface, ProcessFactoryAwareInterface |
|
18 | { |
|
19 | use OptionalLoggerTrait; |
|
20 | use FileProcessTrait; |
|
21 | use GetOptionTrait; |
|
22 | ||
23 | /** |
|
24 | * Compress a file and return the new file |
|
25 | * |
|
26 | * @param FileNodeInterface $node |
|
27 | * @param array $options |
|
28 | * |
|
29 | * @return FileNodeInterface |
|
30 | */ |
|
31 | public function compress(FileNodeInterface $node, array $options = []) |
|
32 | { |
|
33 | if (!($node instanceof LocalFile)) { |
|
34 | throw new InvalidArgumentException("Node: $node should be a LocalFile"); |
|
35 | } |
|
36 | return $this->gzip($node, $options); |
|
37 | } |
|
38 | ||
39 | /** |
|
40 | * @param LocalFile $file |
|
41 | * @param array $options -keepOldFile <bool> (Default: true) |
|
42 | * |
|
43 | * @return LocalFile |
|
44 | * @throws ProcessFailedException |
|
45 | */ |
|
46 | public function gzip(LocalFile $file, array $options = []) |
|
47 | { |
|
48 | $this->options = $options; |
|
49 | $pathInfo = pathinfo($file->getPath()); |
|
50 | ||
51 | if (!$file->exists()) { |
|
52 | throw new InvalidArgumentException("The file: $file does not exist"); |
|
53 | } |
|
54 | ||
55 | $outputFile = $file->getClone() |
|
56 | ->setPath($pathInfo['dirname'] . '/' . $pathInfo['filename'] . '.gz') |
|
57 | ->setCompression(CompressionType::GZIP); |
|
58 | ||
59 | $this->log(LogLevel::INFO, "Compressing file: {file} into {target} using {compression}", [ |
|
60 | 'file' => $file, |
|
61 | 'target' => $outputFile, |
|
62 | 'compression' => CompressionType::GZIP, |
|
63 | ]); |
|
64 | ||
65 | $cmd = "gzip -c {$file->getPath()} > {$outputFile->getPath()}"; |
|
66 | ||
67 | return $this->processFile($file, $outputFile, $cmd, $this->getOption('keepOldFile', true)); |
|
68 | } |
|
69 | ||
70 | /** |
|
71 | * Decompress a file and return the decompressed file |
|
72 | * |
|
73 | * @param FileNodeInterface $node |
|
74 | * @param array $options |
|
75 | * |
|
76 | * @return FileNodeInterface |
|
77 | */ |
|
78 | public function decompress(FileNodeInterface $node, array $options = []) |
|
79 | { |
|
80 | if (!($node instanceof LocalFile)) { |
|
81 | throw new InvalidArgumentException("Node: $node should be a LocalFile"); |
|
82 | } |
|
83 | return $this->gunzip($node, $options); |
|
84 | } |
|
85 | ||
86 | /** |
|
87 | * @extend Graze\DataFile\Node\File\LocalFile |
|
88 | * |
|
89 | * @param LocalFile $file |
|
90 | * @param array $options |
|
91 | * |
|
92 | * @return LocalFile |
|
93 | */ |
|
94 | public function gunzip(LocalFile $file, array $options = []) |
|
95 | { |
|
96 | $this->options = $options; |
|
97 | $pathInfo = pathinfo($file->getPath()); |
|
98 | ||
99 | if (!$file->exists()) { |
|
100 | throw new InvalidArgumentException("The file: $file does not exist"); |
|
101 | } |
|
102 | ||
103 | $outputFile = $file->getClone() |
|
104 | ->setPath($pathInfo['dirname'] . '/' . $pathInfo['filename']) |
|
105 | ->setCompression(CompressionType::NONE); |
|
106 | ||
107 | $this->log(LogLevel::INFO, "DeCompressing file: {file} into {target} using {compression}", [ |
|
108 | 'file' => $file, |
|
109 | 'target' => $outputFile, |
|
110 | 'compression' => CompressionType::GZIP, |
|
111 | ]); |
|
112 | ||
113 | $cmd = "gunzip -c {$file->getPath()} > {$outputFile->getPath()}"; |
|
114 | ||
115 | ||
116 | return $this->processFile($file, $outputFile, $cmd, $this->getOption('keepOldFile', true)); |
|
117 | } |
|
118 | } |
|
119 |
@@ 16-117 (lines=102) @@ | ||
13 | use Psr\Log\LogLevel; |
|
14 | use Symfony\Component\Process\Exception\ProcessFailedException; |
|
15 | ||
16 | class Zip implements CompressorInterface, DeCompressorInterface, LoggerAwareInterface, ProcessFactoryAwareInterface |
|
17 | { |
|
18 | use OptionalLoggerTrait; |
|
19 | use FileProcessTrait; |
|
20 | use GetOptionTrait; |
|
21 | ||
22 | /** |
|
23 | * Compress a file and return the new file |
|
24 | * |
|
25 | * @param FileNodeInterface $node |
|
26 | * @param array $options |
|
27 | * |
|
28 | * @return FileNodeInterface |
|
29 | */ |
|
30 | public function compress(FileNodeInterface $node, array $options = []) |
|
31 | { |
|
32 | if (!($node instanceof LocalFile)) { |
|
33 | throw new InvalidArgumentException("Node: $node should be a LocalFile"); |
|
34 | } |
|
35 | ||
36 | return $this->zip($node, $options); |
|
37 | } |
|
38 | ||
39 | /** |
|
40 | * @extend Graze\DataFile\Node\File\LocalFile |
|
41 | * |
|
42 | * @param LocalFile $file |
|
43 | * @param array $options -keepOldFile <bool> (Default: true) |
|
44 | * |
|
45 | * @return LocalFile |
|
46 | */ |
|
47 | public function zip(LocalFile $file, array $options = []) |
|
48 | { |
|
49 | $this->options = $options; |
|
50 | $pathInfo = pathinfo($file->getPath()); |
|
51 | ||
52 | if (!$file->exists()) { |
|
53 | throw new InvalidArgumentException("The file: $file does not exist"); |
|
54 | } |
|
55 | ||
56 | $outputFile = $file->getClone() |
|
57 | ->setPath($pathInfo['dirname'] . '/' . $pathInfo['filename'] . '.zip') |
|
58 | ->setCompression(CompressionType::ZIP); |
|
59 | ||
60 | $this->log(LogLevel::INFO, "Compressing file: {file} into {target} using {compression}", [ |
|
61 | 'file' => $file, |
|
62 | 'target' => $outputFile, |
|
63 | 'compression' => CompressionType::ZIP, |
|
64 | ]); |
|
65 | $cmd = "zip {$outputFile->getPath()} {$file->getPath()}"; |
|
66 | ||
67 | return $this->processFile($file, $outputFile, $cmd, $this->getOption('keepOldFile', true)); |
|
68 | } |
|
69 | ||
70 | /** |
|
71 | * Decompress a file and return the decompressed file |
|
72 | * |
|
73 | * @param FileNodeInterface $node |
|
74 | * @param array $options |
|
75 | * |
|
76 | * @return FileNodeInterface |
|
77 | */ |
|
78 | public function decompress(FileNodeInterface $node, array $options = []) |
|
79 | { |
|
80 | if (!($node instanceof LocalFile)) { |
|
81 | throw new InvalidArgumentException("Node: $node should be a LocalFile"); |
|
82 | } |
|
83 | return $this->unzip($node, $options); |
|
84 | } |
|
85 | ||
86 | /** |
|
87 | * @extend Graze\DataFile\Node\File\LocalFile |
|
88 | * |
|
89 | * @param LocalFile $file |
|
90 | * @param array $options |
|
91 | * |
|
92 | * @return FileNodeInterface |
|
93 | */ |
|
94 | public function unzip(LocalFile $file, array $options = []) |
|
95 | { |
|
96 | $this->options = $options; |
|
97 | $pathInfo = pathinfo($file->getPath()); |
|
98 | ||
99 | if (!$file->exists()) { |
|
100 | throw new InvalidArgumentException("The file: $file does not exist"); |
|
101 | } |
|
102 | ||
103 | $outputFile = $file->getClone() |
|
104 | ->setPath($pathInfo['dirname'] . '/' . $pathInfo['filename']) |
|
105 | ->setCompression(CompressionType::NONE); |
|
106 | ||
107 | $this->log(LogLevel::INFO, "DeCompressing file: {file} into {target} using {compression}", [ |
|
108 | 'file' => $file, |
|
109 | 'target' => $outputFile, |
|
110 | 'compression' => CompressionType::ZIP, |
|
111 | ]); |
|
112 | ||
113 | $cmd = "unzip -p {$file->getPath()} > {$outputFile->getPath()}"; |
|
114 | ||
115 | return $this->processFile($file, $outputFile, $cmd, $this->getOption('keepOldFile', true)); |
|
116 | } |
|
117 | } |
|
118 |