%PDF- %PDF-
| Direktori : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-php/src/Firebase/ |
| Current File : //home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-php/src/Firebase/RemoteConfig.php |
<?php
declare(strict_types=1);
namespace Kreait\Firebase;
use Kreait\Firebase\Exception\RemoteConfig\ValidationFailed;
use Kreait\Firebase\Exception\RemoteConfig\VersionNotFound;
use Kreait\Firebase\Exception\RemoteConfigException;
use Kreait\Firebase\RemoteConfig\ApiClient;
use Kreait\Firebase\RemoteConfig\FindVersions;
use Kreait\Firebase\RemoteConfig\Template;
use Kreait\Firebase\RemoteConfig\Version;
use Kreait\Firebase\RemoteConfig\VersionNumber;
use Kreait\Firebase\Util\JSON;
/**
* The Firebase Remote Config.
*
* @see https://firebase.google.com/docs/remote-config/use-config-rest
* @see https://firebase.google.com/docs/remote-config/rest-reference
*/
class RemoteConfig
{
/**
* @var ApiClient
*/
private $client;
public function __construct(ApiClient $client)
{
$this->client = $client;
}
public function get(): Template
{
return Template::fromResponse($this->client->getTemplate());
}
/**
* Validates the given template without publishing it.
*
* @param Template|array $template
*
* @throws ValidationFailed if the validation failed
*/
public function validate($template)
{
$template = $template instanceof Template ? $template : Template::fromArray($template);
$this->client->validateTemplate($template);
}
/**
* @param Template|array $template
*
* @throws RemoteConfigException
*
* @return string The etag value of the published template that can be compared to in later calls
*/
public function publish($template): string
{
$template = $template instanceof Template ? $template : Template::fromArray($template);
$response = $this->client->publishTemplate($template);
$etag = $response->getHeader('ETag');
return array_shift($etag);
}
/**
* Returns a version with the given number.
*
* @param VersionNumber|mixed $versionNumber
*
* @throws VersionNotFound
*
* @return Version
*/
public function getVersion($versionNumber): Version
{
$versionNumber = $versionNumber instanceof VersionNumber
? $versionNumber
: VersionNumber::fromValue($versionNumber);
foreach ($this->listVersions() as $version) {
if ($version->versionNumber()->equalsTo($versionNumber)) {
return $version;
}
}
throw VersionNotFound::withVersionNumber($versionNumber);
}
/**
* Returns a version with the given number.
*
* @param VersionNumber|mixed $versionNumber
*
* @throws VersionNotFound
*
* @return Template
*/
public function rollbackToVersion($versionNumber): Template
{
$versionNumber = $versionNumber instanceof VersionNumber
? $versionNumber
: VersionNumber::fromValue($versionNumber);
$response = $this->client->rollbackToVersion($versionNumber);
return Template::fromResponse($response);
}
/**
* @param FindVersions|array $query
*
* @return \Generator|Version[]
*/
public function listVersions($query = null): \Generator
{
$query = $query instanceof FindVersions ? $query : FindVersions::fromArray((array) $query);
$pageToken = null;
$count = 0;
do {
$response = $this->client->listVersions($query, $pageToken);
$result = JSON::decode((string) $response->getBody(), true);
foreach ((array) ($result['versions'] ?? []) as $versionData) {
++$count;
yield Version::fromArray($versionData);
if ($count === (int) $query->limit()) {
return;
}
}
$pageToken = $result['nextPageToken'] ?? null;
} while ($pageToken);
}
}