Skip to content
Snippets Groups Projects
Commit aff054fd authored by Stein Magne Bjorklund's avatar Stein Magne Bjorklund
Browse files

Refactor Utils::getMirroredUri()

- Reduce logic complexity.
- Return early. Code get called on every request and should be fast.
- Remove support for mirroring multiple uri. Code uses a long gone
PHP function. Split this into a private method.
parent ca65641a
No related branches found
No related tags found
No related merge requests found
......@@ -215,7 +215,7 @@ class Utils
$t = $parser->getTriples();
$triples = array_merge($triples, $t);
}
if ($lodspk['mirror_external_uris']) {
if (self::mirror_external_uris($lodspk)) {
global $uri;
global $localUri;
$t = array();
......@@ -803,38 +803,54 @@ class Utils
return $result;
}
public static function getMirroredUri($localUri)
public static function mirror_external_uris($conf): bool
{
global $conf;
$uri = $localUri;
if (isset($conf['mirror_external_uris']) && $conf['mirror_external_uris'] != false) {
if (is_bool($conf['mirror_external_uris'])) {
$uri = preg_replace("|^" . $conf['basedir'] . "|", $conf['ns']['base'], $localUri);
} elseif (is_string($conf['mirror_external_uris'])) {
$uri = preg_replace("|^" . $conf['basedir'] . "|", $conf['mirror_external_uris'], $localUri);
} elseif (is_array($conf['mirror_external_uris'])) {
$defaultKey = ""; //Default namespace is empty string ""
$namespaceFragment = array_shift(split("/", str_replace($conf['basedir'], "", $localUri)));
return isset($conf['mirror_external_uris']) && $conf['mirror_external_uris'] !== false;
}
private static function multiple_mirror_external_uris($conf)
{
HTTPStatus::send500("Mirroring multiple external uris currently not supported in PHP 7 and 8 by Loadspeakr");
$defaultKey = ""; //Default namespace is empty string ""
$namespaceFragment = array_shift(split("/", str_replace($conf['basedir'], "", $localUri)));
$uri = preg_replace(
"|^" . $conf['basedir'] . "|",
$conf['mirror_external_uris'][$defaultKey],
$localUri
);
foreach ($conf['mirror_external_uris'] as $k => $v) {
if ($namespaceFragment == $k) {
$uri = preg_replace(
"|^" . $conf['basedir'] . "|",
$conf['mirror_external_uris'][$defaultKey],
"|^" . $conf['basedir'] . $k . "/" . "|",
$conf['mirror_external_uris'][$k],
$localUri
);
foreach ($conf['mirror_external_uris'] as $k => $v) {
if ($namespaceFragment == $k) {
$uri = preg_replace(
"|^" . $conf['basedir'] . $k . "/" . "|",
$conf['mirror_external_uris'][$k],
$localUri
);
break;
}
}
} else {
HTTPStatus::send500("Error in mirroring configuration");
exit(1);
break;
}
}
}
public static function getMirroredUri($localUri)
{
global $conf;
$uri = '';
if (!self::mirror_external_uris($conf)) {
return $localUri;
}
if (is_bool($conf['mirror_external_uris'])) {
$uri = preg_replace("|^" . $conf['basedir'] . "|", $conf['ns']['base'], $localUri);
} elseif (is_string($conf['mirror_external_uris'])) {
$uri = preg_replace("|^" . $conf['basedir'] . "|", $conf['mirror_external_uris'], $localUri);
} elseif (is_array($conf['mirror_external_uris'])) {
self::multiple_mirror_external_uris($conf);
} else {
HTTPStatus::send500("Error in mirroring configuration");
}
return $uri;
}
......
......@@ -148,7 +148,7 @@ class ServiceModule extends abstractModule
$prefixHeader = array();
for ($i = 0; $i < sizeof($params); $i++) {
if ($conf['mirror_external_uris'] != false) {
if (Utils::mirror_external_uris($conf)) {
$altUri = Utils::curie2uri($params[$i]);
$altUri = preg_replace("|^" . $conf['basedir'] . "|", $conf['ns']['local'], $altUri);
$params[$i] = Utils::uri2curie($altUri);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment