laravel-websockets/src/ClientProviders/ConfigClientProvider.php

57 lines
1.4 KiB
PHP
Raw Normal View History

2018-11-24 00:25:40 +00:00
<?php
namespace BeyondCode\LaravelWebSockets\ClientProviders;
2018-11-24 00:53:20 +00:00
use Illuminate\Support\Collection;
2018-11-24 00:25:40 +00:00
class ConfigClientProvider implements ClientProvider
{
2018-11-28 08:53:03 +00:00
/** @var Collection */
protected $clients;
public function __construct()
{
$this->clients = collect(config('websockets.clients'));
}
2018-11-28 22:59:58 +00:00
/** @return array[\BeyondCode\LaravelWebSockets\ClientProviders\Client] */
2018-11-25 23:29:35 +00:00
public function all(): array
{
2018-11-28 08:53:03 +00:00
return $this->clients
2018-11-25 23:29:35 +00:00
->map(function ($client) {
return $this->instanciate($client);
})
->toArray();
}
2018-11-24 00:53:20 +00:00
public function findByAppId(int $appId): ?Client
{
$clientAttributes = $this
2018-11-28 08:53:03 +00:00
->clients
2018-11-24 00:53:20 +00:00
->firstWhere('app_id', $appId);
return $this->instanciate($clientAttributes);
}
public function findByAppKey(string $appKey): ?Client
2018-11-24 00:25:40 +00:00
{
2018-11-24 00:53:20 +00:00
$clientAttributes = $this
2018-11-28 08:53:03 +00:00
->clients
2018-11-24 00:53:20 +00:00
->firstWhere('app_key', $appKey);
2018-11-24 00:25:40 +00:00
2018-11-24 00:53:20 +00:00
return $this->instanciate($clientAttributes);
}
2018-11-24 00:25:40 +00:00
2018-11-24 00:53:20 +00:00
protected function instanciate(?array $clientAttributes): ?Client
{
if (! $clientAttributes) {
2018-11-24 00:25:40 +00:00
return null;
}
return new Client(
2018-11-24 00:53:20 +00:00
$clientAttributes['app_id'],
$clientAttributes['app_key'],
2018-11-24 22:52:55 +00:00
$clientAttributes['app_secret'],
$clientAttributes['name'] ?? null
2018-11-24 00:25:40 +00:00
);
}
}