fix: dont fail for non-existing enabled bridge (#3589)

* fix: dont fail for non-existing enabled bridge

* yup
This commit is contained in:
Dag 2023-08-01 19:35:15 +02:00 committed by GitHub
parent 10f7b6f4f6
commit ed97ce8646
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 12 deletions

View file

@ -37,12 +37,14 @@ class ConnectivityAction implements ActionInterface
throw new \Exception('This action is only available in debug mode!');
}
if (!isset($request['bridge'])) {
$bridgeName = $request['bridge'] ?? null;
if (!$bridgeName) {
return render_template('connectivity.html.php');
}
$bridgeClassName = $this->bridgeFactory->createBridgeClassName($request['bridge']);
$bridgeClassName = $this->bridgeFactory->createBridgeClassName($bridgeName);
if (!$bridgeClassName) {
throw new \Exception(sprintf('Bridge not found: %s', $bridgeName));
}
return $this->reportBridgeConnectivity($bridgeClassName);
}

View file

@ -33,9 +33,15 @@ class DisplayAction implements ActionInterface
private function createResponse(array $request)
{
$bridgeFactory = new BridgeFactory();
$bridgeClassName = $bridgeFactory->createBridgeClassName($request['bridge'] ?? '');
$formatFactory = new FormatFactory();
$bridgeName = $request['bridge'] ?? null;
$format = $request['format'] ?? null;
$bridgeClassName = $bridgeFactory->createBridgeClassName($bridgeName);
if (!$bridgeClassName) {
throw new \Exception(sprintf('Bridge not found: %s', $bridgeName));
}
if (!$format) {
throw new \Exception('You must specify a format!');
}
@ -43,7 +49,6 @@ class DisplayAction implements ActionInterface
throw new \Exception('This bridge is not whitelisted');
}
$formatFactory = new FormatFactory();
$format = $formatFactory->create($format);
$bridge = $bridgeFactory->create($bridgeClassName);

View file

@ -23,7 +23,11 @@ class SetBridgeCacheAction implements ActionInterface
$bridgeFactory = new BridgeFactory();
$bridgeClassName = $bridgeFactory->createBridgeClassName($request['bridge'] ?? '');
$bridgeName = $request['bridge'] ?? null;
$bridgeClassName = $bridgeFactory->createBridgeClassName($bridgeName);
if (!$bridgeClassName) {
throw new \Exception(sprintf('Bridge not found: %s', $bridgeName));
}
// whitelist control
if (!$bridgeFactory->isEnabled($bridgeClassName)) {

View file

@ -23,7 +23,12 @@ final class BridgeFactory
$this->enabledBridges = $this->bridgeClassNames;
break;
}
$this->enabledBridges[] = $this->createBridgeClassName($enabledBridge);
$bridgeClassName = $this->createBridgeClassName($enabledBridge);
if ($bridgeClassName) {
$this->enabledBridges[] = $bridgeClassName;
} else {
Logger::info(sprintf('Bridge not found: %s', $enabledBridge));
}
}
}
@ -42,13 +47,10 @@ final class BridgeFactory
$name = self::normalizeBridgeName($bridgeName);
$namesLoweredCase = array_map('strtolower', $this->bridgeClassNames);
$nameLoweredCase = strtolower($name);
if (! in_array($nameLoweredCase, $namesLoweredCase)) {
throw new \Exception(sprintf('Bridge name invalid: %s', $bridgeName));
return null;
}
$index = array_search($nameLoweredCase, $namesLoweredCase);
return $this->bridgeClassNames[$index];
}