65 lines
1.4 KiB
PHP
Executable File
65 lines
1.4 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Kreait\Firebase\Auth;
|
|
|
|
use Beste\Json;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
|
|
use function count;
|
|
use function is_countable;
|
|
|
|
final class DeleteUsersResult
|
|
{
|
|
/**
|
|
* @param list<array{
|
|
* index: int,
|
|
* localId: string,
|
|
* message: string
|
|
* }> $rawErrors
|
|
*/
|
|
private function __construct(
|
|
private readonly int $successCount,
|
|
private readonly int $failureCount,
|
|
private readonly array $rawErrors,
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
public static function fromRequestAndResponse(DeleteUsersRequest $request, ResponseInterface $response): self
|
|
{
|
|
$data = Json::decode((string) $response->getBody(), true);
|
|
$errors = $data['errors'] ?? [];
|
|
|
|
$failureCount = is_countable($errors) ? count($errors) : 0;
|
|
$successCount = count($request->uids()) - $failureCount;
|
|
|
|
return new self($successCount, $failureCount, $errors);
|
|
}
|
|
|
|
public function failureCount(): int
|
|
{
|
|
return $this->failureCount;
|
|
}
|
|
|
|
public function successCount(): int
|
|
{
|
|
return $this->successCount;
|
|
}
|
|
|
|
/**
|
|
* @return list<array{
|
|
* index: int,
|
|
* localId: string,
|
|
* message: string
|
|
* }>
|
|
*/
|
|
public function rawErrors(): array
|
|
{
|
|
return $this->rawErrors;
|
|
}
|
|
}
|