Helpers.php•2.58 kB
<?php
declare(strict_types=1);
/**
 * Check if the server is running in offline mode.
 *
 * @return bool True if no OpenFGA configuration is provided
 */
function isOfflineMode(): bool
{
    $apiUrl = getConfiguredString('OPENFGA_MCP_API_URL', '');
    $hasToken = '' !== getConfiguredString('OPENFGA_MCP_API_TOKEN', '');
    $hasClientId = '' !== getConfiguredString('OPENFGA_MCP_API_CLIENT_ID', '');
    return '' === $apiUrl && ! $hasToken && ! $hasClientId;
}
function getConfiguredString(string $env, string $default = ''): string
{
    // In testing environments, check $_ENV first as it can be overridden more reliably
    /** @var mixed $value */
    $value = array_key_exists($env, $_ENV) ? $_ENV[$env] : getenv($env);
    // Treat false, null, empty string, or the literal string 'false' as not set
    if (false === $value || null === $value || '' === $value || 'false' === $value) {
        return $default;
    }
    if (is_string($value)) {
        $stringValue = $value;
    } elseif (is_scalar($value)) {
        $stringValue = (string) $value;
    } else {
        return $default;
    }
    $stringValue = trim($stringValue);
    if ('' === $stringValue || 'false' === $stringValue) {
        return $default;
    }
    return $stringValue;
}
function getConfiguredInt(string $env, int $default = 0): int
{
    // In testing environments, check $_ENV first as it can be overridden more reliably
    /** @var mixed $value */
    $value = array_key_exists($env, $_ENV) ? $_ENV[$env] : getenv($env);
    if (false === $value || null === $value || ! is_numeric($value)) {
        return $default;
    }
    return (int) $value;
}
function getConfiguredBool(string $env, bool $default = false): bool
{
    // In testing environments, check $_ENV first as it can be overridden more reliably
    /** @var mixed $value */
    $value = array_key_exists($env, $_ENV) ? $_ENV[$env] : getenv($env);
    // Treat false, null, empty string, or the literal string 'false' as not set
    if (false === $value || null === $value || '' === $value) {
        return $default;
    }
    if (is_string($value)) {
        $stringValue = $value;
    } elseif (is_scalar($value)) {
        $stringValue = (string) $value;
    } else {
        return $default;
    }
    // Convert string representations to bool
    if ('true' === $stringValue || '1' === $stringValue) {
        return true;
    }
    // Explicitly treat 'false', '0' as false (not default)
    if ('false' === $stringValue || '0' === $stringValue) {
        return false;
    }
    return $default;
}