%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/ServiceAccount.php |
<?php
namespace Kreait\Firebase;
use Kreait\Firebase\Exception\InvalidArgumentException;
use Kreait\Firebase\ServiceAccount\Discoverer;
use Kreait\Firebase\Util\JSON;
class ServiceAccount
{
private $projectId;
private $sanitizedProjectId;
private $clientId;
private $clientEmail;
private $privateKey;
public function getProjectId(): string
{
return $this->projectId;
}
public function getSanitizedProjectId(): string
{
if (!$this->sanitizedProjectId) {
$this->sanitizedProjectId = preg_replace('/[^A-Za-z0-9\-]/', '-', $this->projectId);
}
return $this->sanitizedProjectId;
}
public function withProjectId(string $value): self
{
$serviceAccount = clone $this;
$serviceAccount->projectId = $value;
$serviceAccount->sanitizedProjectId = null;
return $serviceAccount;
}
public function hasClientId(): bool
{
return (bool) $this->clientId;
}
public function getClientId(): string
{
return $this->clientId;
}
public function withClientId(string $value): self
{
$serviceAccount = clone $this;
$serviceAccount->clientId = $value;
return $serviceAccount;
}
public function getClientEmail(): string
{
return $this->clientEmail;
}
public function withClientEmail(string $value): self
{
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException(sprintf('"%s" is not a valid email.', $value));
}
$serviceAccount = clone $this;
$serviceAccount->clientEmail = $value;
return $serviceAccount;
}
public function hasPrivateKey(): bool
{
return (bool) $this->privateKey;
}
public function getPrivateKey(): string
{
return $this->privateKey;
}
public function withPrivateKey(string $value): self
{
$serviceAccount = clone $this;
$serviceAccount->privateKey = $value;
return $serviceAccount;
}
/**
* @param mixed $value
*
* @throws InvalidArgumentException
*
* @return ServiceAccount
*/
public static function fromValue($value): self
{
if ($value instanceof self) {
return $value;
}
if (\is_string($value)) {
try {
return self::fromJson($value);
} catch (InvalidArgumentException $e) {
return self::fromJsonFile($value);
}
}
if (\is_array($value)) {
return self::fromArray($value);
}
throw new InvalidArgumentException('Invalid service account specification.');
}
public static function fromArray(array $config): self
{
$requiredFields = ['project_id', 'client_id', 'client_email', 'private_key'];
$missingFields = [];
foreach ($requiredFields as $field) {
if (!isset($config[$field])) {
$missingFields[] = $field;
}
}
if (!empty($missingFields)) {
throw new InvalidArgumentException(
'The following fields are missing/empty in the Service Account specification: "'
.implode('", "', $missingFields)
.'". Please make sure you download the Service Account JSON file from the Service Accounts tab '
.'in the Firebase Console, as shown in the documentation on '
.'https://firebase.google.com/docs/admin/setup#add_firebase_to_your_app'
);
}
return (new self())
->withProjectId($config['project_id'])
->withClientId($config['client_id'])
->withClientEmail($config['client_email'])
->withPrivateKey($config['private_key']);
}
public static function fromJson(string $json): self
{
$config = JSON::decode($json, true);
return self::fromArray($config);
}
public static function fromJsonFile(string $filePath): self
{
try {
$file = new \SplFileObject($filePath);
$json = $file->fread($file->getSize());
} catch (\Throwable $e) {
throw new InvalidArgumentException(sprintf('%s can not be read: %s', $filePath, $e->getMessage()));
}
try {
return self::fromJson($json);
} catch (\Throwable $e) {
throw new InvalidArgumentException(sprintf('%s could not be parsed to a Service Account: %s', $filePath, $e->getMessage()));
}
}
public static function withProjectIdAndServiceAccountId(string $projectId, string $serviceAccountId): self
{
$serviceAccount = new self();
$serviceAccount->projectId = $projectId;
$serviceAccount->clientEmail = $serviceAccountId;
return $serviceAccount;
}
/**
* @param Discoverer|null $discoverer
*
* @return ServiceAccount
*/
public static function discover(Discoverer $discoverer = null): self
{
$discoverer = $discoverer ?: new Discoverer();
return $discoverer->discover();
}
}