Provides a post download event (#8655)
parent
6bed9d8f13
commit
1883832ddc
|
@ -21,6 +21,7 @@ use Composer\Package\Comparer\Comparer;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
use Composer\Package\Version\VersionParser;
|
use Composer\Package\Version\VersionParser;
|
||||||
use Composer\Plugin\PluginEvents;
|
use Composer\Plugin\PluginEvents;
|
||||||
|
use Composer\Plugin\PostFileDownloadEvent;
|
||||||
use Composer\Plugin\PreFileDownloadEvent;
|
use Composer\Plugin\PreFileDownloadEvent;
|
||||||
use Composer\EventDispatcher\EventDispatcher;
|
use Composer\EventDispatcher\EventDispatcher;
|
||||||
use Composer\Util\Filesystem;
|
use Composer\Util\Filesystem;
|
||||||
|
@ -140,7 +141,7 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
|
||||||
->then($accept, $reject);
|
->then($accept, $reject);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result->then(function ($result) use ($fileName, $checksum, $url) {
|
return $result->then(function ($result) use ($fileName, $checksum, $url, $eventDispatcher) {
|
||||||
// in case of retry, the first call's Promise chain finally calls this twice at the end,
|
// in case of retry, the first call's Promise chain finally calls this twice at the end,
|
||||||
// once with $result being the returned $fileName from $accept, and then once for every
|
// once with $result being the returned $fileName from $accept, and then once for every
|
||||||
// failed request with a null result, which can be skipped.
|
// failed request with a null result, which can be skipped.
|
||||||
|
@ -157,6 +158,11 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
|
||||||
throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url['base'].')');
|
throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url['base'].')');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($eventDispatcher) {
|
||||||
|
$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, $fileName, $checksum, $url['processed']);
|
||||||
|
$eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent);
|
||||||
|
}
|
||||||
|
|
||||||
return $fileName;
|
return $fileName;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,6 +49,16 @@ class PluginEvents
|
||||||
*/
|
*/
|
||||||
const PRE_FILE_DOWNLOAD = 'pre-file-download';
|
const PRE_FILE_DOWNLOAD = 'pre-file-download';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The POST_FILE_DOWNLOAD event occurs after downloading a package dist file
|
||||||
|
*
|
||||||
|
* The event listener method receives a
|
||||||
|
* Composer\Plugin\PostFileDownloadEvent instance.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const POST_FILE_DOWNLOAD = 'post-file-download';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The PRE_COMMAND_RUN event occurs before a command is executed and lets you modify the input arguments/options
|
* The PRE_COMMAND_RUN event occurs before a command is executed and lets you modify the input arguments/options
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Composer.
|
||||||
|
*
|
||||||
|
* (c) Nils Adermann <naderman@naderman.de>
|
||||||
|
* Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Plugin;
|
||||||
|
|
||||||
|
use Composer\EventDispatcher\Event;
|
||||||
|
use Composer\Util\RemoteFilesystem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The post file download event.
|
||||||
|
*
|
||||||
|
* @author Nils Adermann <naderman@naderman.de>
|
||||||
|
*/
|
||||||
|
class PostFileDownloadEvent extends Event
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $fileName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string|null
|
||||||
|
*/
|
||||||
|
private $checksum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param string $name The event name
|
||||||
|
* @param string $fileName The file name
|
||||||
|
* @param string|null $checksum The checksum
|
||||||
|
* @param string $url The processed url
|
||||||
|
*/
|
||||||
|
public function __construct($name, $fileName, $checksum, $url)
|
||||||
|
{
|
||||||
|
parent::__construct($name);
|
||||||
|
$this->fileName = $fileName;
|
||||||
|
$this->checksum = $checksum;
|
||||||
|
$this->url = $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the target file name location.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getFileName()
|
||||||
|
{
|
||||||
|
return $this->fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the checksum.
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getChecksum() {
|
||||||
|
return $this->checksum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the processed URL.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getUrl() {
|
||||||
|
return $this->url;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue