laravel-websockets/src/Apps/ConfigAppProvider.php

58 lines
1.3 KiB
PHP
Raw Normal View History

2018-11-24 00:25:40 +00:00
<?php
2018-12-01 12:57:02 +00:00
namespace BeyondCode\LaravelWebSockets\Apps;
2018-11-24 00:25:40 +00:00
2018-11-24 00:53:20 +00:00
use Illuminate\Support\Collection;
2018-12-01 12:57:02 +00:00
class ConfigAppProvider implements AppProvider
2018-11-24 00:25:40 +00:00
{
2018-11-28 08:53:03 +00:00
/** @var Collection */
2018-12-01 12:58:00 +00:00
protected $apps;
2018-11-28 08:53:03 +00:00
public function __construct()
{
2018-12-01 12:58:00 +00:00
$this->apps = collect(config('websockets.clients'));
2018-11-28 08:53:03 +00:00
}
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-12-01 12:58:00 +00:00
return $this->apps
2018-12-01 13:12:15 +00:00
->map(function (array $appAttributes) {
return $this->instanciate($appAttributes);
2018-11-25 23:29:35 +00:00
})
->toArray();
}
2018-12-01 12:57:02 +00:00
public function findById(int $appId): ?App
2018-11-24 00:53:20 +00:00
{
2018-12-01 13:12:15 +00:00
$appAttributes = $this
2018-12-01 12:58:00 +00:00
->apps
2018-12-01 12:57:02 +00:00
->firstWhere('id', $appId);
2018-11-24 00:53:20 +00:00
2018-12-01 13:12:15 +00:00
return $this->instanciate($appAttributes);
2018-11-24 00:53:20 +00:00
}
2018-12-01 12:57:02 +00:00
public function findByKey(string $appKey): ?App
2018-11-24 00:25:40 +00:00
{
2018-12-01 13:12:15 +00:00
$appAttributes = $this
2018-12-01 12:58:00 +00:00
->apps
2018-12-01 12:57:02 +00:00
->firstWhere('key', $appKey);
2018-11-24 00:25:40 +00:00
2018-12-01 13:12:15 +00:00
return $this->instanciate($appAttributes);
2018-11-24 00:53:20 +00:00
}
2018-11-24 00:25:40 +00:00
2018-12-01 12:58:00 +00:00
protected function instanciate(?array $appAttributes): ?App
2018-11-24 00:53:20 +00:00
{
2018-12-01 12:58:00 +00:00
if (! $appAttributes) {
2018-11-24 00:25:40 +00:00
return null;
}
2018-12-01 12:57:02 +00:00
return new App(
2018-12-01 12:58:00 +00:00
$appAttributes['id'],
$appAttributes['key'],
$appAttributes['secret'],
$appAttributes['name'] ?? null
2018-11-24 00:25:40 +00:00
);
}
}