Switch to PSR ServiceLocator for webhook dispatch.

This commit is contained in:
Buster "Silver Eagle" Neece 2018-03-13 01:34:54 -05:00
parent 0c831e60a3
commit 4ec8864820
2 changed files with 12 additions and 14 deletions

View File

@ -486,13 +486,13 @@ return function (\Slim\Container $di, $settings) {
$di[\AzuraCast\Webhook\Dispatcher::class] = function($di) {
return new \AzuraCast\Webhook\Dispatcher(
$di[\Monolog\Logger::class],
[
'local' => $di[\AzuraCast\Webhook\Connector\Local::class],
'generic' => $di[\AzuraCast\Webhook\Connector\Generic::class],
'tunein' => $di[\AzuraCast\Webhook\Connector\TuneIn::class],
'discord' => $di[\AzuraCast\Webhook\Connector\Discord::class],
'twitter' => $di[\AzuraCast\Webhook\Connector\Twitter::class],
]
new \Pimple\Psr11\ServiceLocator($di, [
'local' => \AzuraCast\Webhook\Connector\Local::class,
'generic' => \AzuraCast\Webhook\Connector\Generic::class,
'tunein' => \AzuraCast\Webhook\Connector\TuneIn::class,
'discord' => \AzuraCast\Webhook\Connector\Discord::class,
'twitter' => \AzuraCast\Webhook\Connector\Twitter::class,
])
);
};

View File

@ -3,19 +3,17 @@ namespace AzuraCast\Webhook;
use Entity;
use Monolog\Logger;
use Pimple\Psr11\ServiceLocator;
class Dispatcher
{
/** @var Logger */
protected $logger;
/** @var Connector\ConnectorInterface[] */
/** @var ServiceLocator */
protected $connectors;
/**
* @param Connector\ConnectorInterface[] $connectors
*/
public function __construct(Logger $logger, array $connectors)
public function __construct(Logger $logger, ServiceLocator $connectors)
{
$this->logger = $logger;
$this->connectors = $connectors;
@ -95,13 +93,13 @@ class Dispatcher
// Trigger all appropriate webhooks.
foreach($connectors as $connector) {
if (!isset($this->connectors[$connector['type']])) {
if (!$this->connectors->has($connector['type'])) {
$this->logger->error(sprintf('Webhook connector "%s" does not exist; skipping.', $connector['type']));
continue;
}
/** @var Connector\ConnectorInterface $connector_obj */
$connector_obj = $this->connectors[$connector['type']];
$connector_obj = $this->connectors->get($connector['type']);
if ($connector_obj->shouldDispatch($to_trigger, (array)$connector['triggers'])) {
$this->logger->debug(sprintf('Dispatching connector "%s".', $connector['type']));