Ver código fonte

Added exceptions and fixed CS of the ZipDownloader

Jordi Boggiano 14 anos atrás
pai
commit
e43060eb72
1 arquivos alterados com 13 adições e 9 exclusões
  1. 13 9
      src/Composer/Downloader/ZipDownloader.php

+ 13 - 9
src/Composer/Downloader/ZipDownloader.php

@@ -21,32 +21,36 @@ class ZipDownloader
 {
     public function download(PackageInterface $package, $path)
     {
+        if (!class_exists('ZipArchive')) {
+            throw new \UnexpectedValueException('You need the zip extension enabled to use the ZipDownloader');
+        }
+
         $tmpName = tempnam(sys_get_temp_dir(), '');
         $this->downloadFile($package->getSourceUrl(), $tmpName);
 
         if (!file_exists($tmpName)) {
-            throw new \UnexpectedValueException($tmpName.' could not be created.');
+            throw new \UnexpectedValueException($path.' could not be saved into '.$tmpName.', make sure the'
+                .' directory is writable and you have internet connectivity.');
         }
 
         $zipArchive = new ZipArchive();
 
-        if($zipArchive->open($tmpName) !== TRUE) {
+        if (true === ($retval = $zipArchive->open($tmpName))) {
             $zipArchive->extractTo($path.'/'.$package->getName());
             $zipArchive->close();
-        }
-        else {
-            throw new \UnexpectedValueException($tmpName.'is not a valid zip archive');
+        } else {
+            throw new \UnexpectedValueException($tmpName.' is not a valid zip archive, got error code '.$retval);
         }
     }
 
     protected function downloadFile ($url, $path)
     {
-        $file = fopen ($url, "rb");
+        $file = fopen($url, "rb");
         if ($file) {
-            $newf = fopen ($path, "wb");
+            $newf = fopen($path, "wb");
             if ($newf) {
-                while(!feof($file)) {
-                    fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
+                while (!feof($file)) {
+                    fwrite($newf, fread($file, 1024 * 8), 1024 * 8);
                 }
             }
         }