From 679a8d097a9062e56456ab1a860bf80b93964d79 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Thu, 13 Aug 2020 14:40:19 +0300 Subject: [PATCH 1/4] Fixed logger --- config/websockets.php | 2 +- src/Console/StartWebSocketServer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/websockets.php b/config/websockets.php index a4517cf..45415d7 100644 --- a/config/websockets.php +++ b/config/websockets.php @@ -85,7 +85,7 @@ return [ * The Statistics Logger will, by default, handle the incoming statistics, store them * and then release them into the database on each interval defined below. */ - 'logger' => \BeyondCode\LaravelWebSockets\Statistics\Logger::class, + 'logger' => BeyondCode\LaravelWebSockets\Statistics\Logger\HttpStatisticsLogger::class, /* * Here you can specify the interval in seconds at which statistics should be logged. diff --git a/src/Console/StartWebSocketServer.php b/src/Console/StartWebSocketServer.php index cd1de64..9c51470 100644 --- a/src/Console/StartWebSocketServer.php +++ b/src/Console/StartWebSocketServer.php @@ -65,7 +65,7 @@ class StartWebSocketServer extends Command $browser = new Browser($this->loop, $connector); app()->singleton(StatisticsLoggerInterface::class, function () use ($browser) { - $class = config('websockets.statistics.logger', \BeyondCode\LaravelWebSockets\Statistics\Logger::class); + $class = config('websockets.statistics.logger', \BeyondCode\LaravelWebSockets\Statistics\Logger\HttpStatisticsLogger::class); return new $class(app(ChannelManager::class), $browser); }); From 099d90b885360c0d8d5e3005d67d1a54e90a965c Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Thu, 13 Aug 2020 14:51:18 +0300 Subject: [PATCH 2/4] Renamed AppProvider to AppManager --- config/websockets.php | 2 +- src/Apps/App.php | 6 ++--- src/Apps/{AppProvider.php => AppManager.php} | 2 +- ...igAppProvider.php => ConfigAppManager.php} | 4 ++-- .../Http/Controllers/ShowDashboard.php | 4 ++-- src/Statistics/Rules/AppId.php | 8 +++---- src/WebSocketsServiceProvider.php | 4 ++-- ...viderTest.php => ConfigAppManagerTest.php} | 24 +++++++++---------- 8 files changed, 27 insertions(+), 27 deletions(-) rename src/Apps/{AppProvider.php => AppManager.php} (93%) rename src/Apps/{ConfigAppProvider.php => ConfigAppManager.php} (94%) rename tests/ClientProviders/{ConfigAppProviderTest.php => ConfigAppManagerTest.php} (73%) diff --git a/config/websockets.php b/config/websockets.php index a2ca845..2236fa0 100644 --- a/config/websockets.php +++ b/config/websockets.php @@ -40,7 +40,7 @@ return [ | */ - 'app' => \BeyondCode\LaravelWebSockets\Apps\ConfigAppProvider::class, + 'app' => \BeyondCode\LaravelWebSockets\Apps\ConfigAppManager::class, /* |-------------------------------------------------------------------------- diff --git a/src/Apps/App.php b/src/Apps/App.php index 05c2c23..980e554 100644 --- a/src/Apps/App.php +++ b/src/Apps/App.php @@ -35,17 +35,17 @@ class App public static function findById($appId) { - return app(AppProvider::class)->findById($appId); + return app(AppManager::class)->findById($appId); } public static function findByKey(string $appKey): ?self { - return app(AppProvider::class)->findByKey($appKey); + return app(AppManager::class)->findByKey($appKey); } public static function findBySecret(string $appSecret): ?self { - return app(AppProvider::class)->findBySecret($appSecret); + return app(AppManager::class)->findBySecret($appSecret); } public function __construct($appId, string $appKey, string $appSecret) diff --git a/src/Apps/AppProvider.php b/src/Apps/AppManager.php similarity index 93% rename from src/Apps/AppProvider.php rename to src/Apps/AppManager.php index 02de343..c361238 100644 --- a/src/Apps/AppProvider.php +++ b/src/Apps/AppManager.php @@ -2,7 +2,7 @@ namespace BeyondCode\LaravelWebSockets\Apps; -interface AppProvider +interface AppManager { /** @return array[BeyondCode\LaravelWebSockets\AppProviders\App] */ public function all(): array; diff --git a/src/Apps/ConfigAppProvider.php b/src/Apps/ConfigAppManager.php similarity index 94% rename from src/Apps/ConfigAppProvider.php rename to src/Apps/ConfigAppManager.php index 211bb83..e3f3217 100644 --- a/src/Apps/ConfigAppProvider.php +++ b/src/Apps/ConfigAppManager.php @@ -4,7 +4,7 @@ namespace BeyondCode\LaravelWebSockets\Apps; use Illuminate\Support\Collection; -class ConfigAppProvider implements AppProvider +class ConfigAppManager implements AppManager { /** @var Collection */ protected $apps; @@ -14,7 +14,7 @@ class ConfigAppProvider implements AppProvider $this->apps = collect(config('websockets.apps')); } - /** @return array[\BeyondCode\LaravelWebSockets\AppProviders\App] */ + /** @return array[\BeyondCode\LaravelWebSockets\Apps\App] */ public function all(): array { return $this->apps diff --git a/src/Dashboard/Http/Controllers/ShowDashboard.php b/src/Dashboard/Http/Controllers/ShowDashboard.php index 2ed2bb1..47088ef 100644 --- a/src/Dashboard/Http/Controllers/ShowDashboard.php +++ b/src/Dashboard/Http/Controllers/ShowDashboard.php @@ -2,12 +2,12 @@ namespace BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers; -use BeyondCode\LaravelWebSockets\Apps\AppProvider; +use BeyondCode\LaravelWebSockets\Apps\AppManager; use Illuminate\Http\Request; class ShowDashboard { - public function __invoke(Request $request, AppProvider $apps) + public function __invoke(Request $request, AppManager $apps) { return view('websockets::dashboard', [ 'apps' => $apps->all(), diff --git a/src/Statistics/Rules/AppId.php b/src/Statistics/Rules/AppId.php index 9734a6b..d52199e 100644 --- a/src/Statistics/Rules/AppId.php +++ b/src/Statistics/Rules/AppId.php @@ -2,20 +2,20 @@ namespace BeyondCode\LaravelWebSockets\Statistics\Rules; -use BeyondCode\LaravelWebSockets\Apps\AppProvider; +use BeyondCode\LaravelWebSockets\Apps\AppManager; use Illuminate\Contracts\Validation\Rule; class AppId implements Rule { public function passes($attribute, $value) { - $appProvider = app(AppProvider::class); + $manager = app(AppManager::class); - return $appProvider->findById($value) ? true : false; + return $manager->findById($value) ? true : false; } public function message() { - return 'There is no app registered with the given id. Make sure the websockets config file contains an app for this id or that your custom AppProvider returns an app for this id.'; + return 'There is no app registered with the given id. Make sure the websockets config file contains an app for this id or that your custom AppManager returns an app for this id.'; } } diff --git a/src/WebSocketsServiceProvider.php b/src/WebSocketsServiceProvider.php index 87fb046..a0bd848 100644 --- a/src/WebSocketsServiceProvider.php +++ b/src/WebSocketsServiceProvider.php @@ -2,7 +2,7 @@ namespace BeyondCode\LaravelWebSockets; -use BeyondCode\LaravelWebSockets\Apps\AppProvider; +use BeyondCode\LaravelWebSockets\Apps\AppManager; use BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers\AuthenticateDashboard; use BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers\DashboardApiController; use BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers\SendMessage; @@ -101,7 +101,7 @@ class WebSocketsServiceProvider extends ServiceProvider return new $channelManager; }); - $this->app->singleton(AppProvider::class, function () { + $this->app->singleton(AppManager::class, function () { return $this->app->make(config('websockets.managers.app')); }); } diff --git a/tests/ClientProviders/ConfigAppProviderTest.php b/tests/ClientProviders/ConfigAppManagerTest.php similarity index 73% rename from tests/ClientProviders/ConfigAppProviderTest.php rename to tests/ClientProviders/ConfigAppManagerTest.php index 150233b..14b7382 100644 --- a/tests/ClientProviders/ConfigAppProviderTest.php +++ b/tests/ClientProviders/ConfigAppManagerTest.php @@ -2,25 +2,25 @@ namespace BeyondCode\LaravelWebSockets\Tests\ClientProviders; -use BeyondCode\LaravelWebSockets\Apps\ConfigAppProvider; +use BeyondCode\LaravelWebSockets\Apps\ConfigAppManager; use BeyondCode\LaravelWebSockets\Tests\TestCase; -class ConfigAppProviderTest extends TestCase +class ConfigAppManagerTest extends TestCase { - /** @var \BeyondCode\LaravelWebSockets\Apps\ConfigAppProvider */ - protected $configAppProvider; + /** @var \BeyondCode\LaravelWebSockets\Apps\ConfigAppManager */ + protected $appManager; public function setUp(): void { parent::setUp(); - $this->configAppProvider = new ConfigAppProvider(); + $this->appManager = new ConfigAppManager; } /** @test */ public function it_can_get_apps_from_the_config_file() { - $apps = $this->configAppProvider->all(); + $apps = $this->appManager->all(); $this->assertCount(1, $apps); @@ -38,11 +38,11 @@ class ConfigAppProviderTest extends TestCase /** @test */ public function it_can_find_app_by_id() { - $app = $this->configAppProvider->findById(0000); + $app = $this->appManager->findById(0000); $this->assertNull($app); - $app = $this->configAppProvider->findById(1234); + $app = $this->appManager->findById(1234); $this->assertEquals('Test App', $app->name); $this->assertEquals(1234, $app->id); @@ -55,11 +55,11 @@ class ConfigAppProviderTest extends TestCase /** @test */ public function it_can_find_app_by_key() { - $app = $this->configAppProvider->findByKey('InvalidKey'); + $app = $this->appManager->findByKey('InvalidKey'); $this->assertNull($app); - $app = $this->configAppProvider->findByKey('TestKey'); + $app = $this->appManager->findByKey('TestKey'); $this->assertEquals('Test App', $app->name); $this->assertEquals(1234, $app->id); @@ -72,11 +72,11 @@ class ConfigAppProviderTest extends TestCase /** @test */ public function it_can_find_app_by_secret() { - $app = $this->configAppProvider->findBySecret('InvalidSecret'); + $app = $this->appManager->findBySecret('InvalidSecret'); $this->assertNull($app); - $app = $this->configAppProvider->findBySecret('TestSecret'); + $app = $this->appManager->findBySecret('TestSecret'); $this->assertEquals('Test App', $app->name); $this->assertEquals(1234, $app->id); From 83830548fd9950d1066e5c0edd8f5d56ab21aa16 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Thu, 13 Aug 2020 15:21:55 +0300 Subject: [PATCH 3/4] Fixed the urls for the dashboard API calls --- resources/views/dashboard.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index fbf90c7..58a6426 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -118,7 +118,7 @@ wssPort: this.port === null ? 6001 : this.port, wsPath: this.app.path === null ? '' : this.app.path, disableStats: true, - authEndpoint: '{{ url('/auth') }}', + authEndpoint: '{{ url(request()->path().'/auth') }}', auth: { headers: { 'X-CSRF-Token': "{{ csrf_token() }}", @@ -162,7 +162,7 @@ }, loadChart() { - $.getJSON('{{ url('/api') }}/' + this.app.id + '/statistics', (data) => { + $.getJSON('{{ url(request()->path().'/api') }}/' + this.app.id + '/statistics', (data) => { let chartData = [ { @@ -246,7 +246,7 @@ }, sendEvent() { - $.post('{{ url('/event') }}', { + $.post('{{ url(request()->path().'/event') }}', { _token: '{{ csrf_token() }}', key: this.app.key, secret: this.app.secret, From 4bd5273d477e830360e8d4526d25547ae2b97143 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Thu, 13 Aug 2020 15:29:34 +0300 Subject: [PATCH 4/4] Removed Larave 5.8 --- .github/workflows/run-tests.yml | 4 +--- composer.json | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 6d3b074..f695a5f 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -10,15 +10,13 @@ jobs: matrix: os: [ubuntu-latest, windows-latest] php: [7.4, 7.3, 7.2] - laravel: [5.8.*, 6.*, 7.*] + laravel: [6.*, 7.*] dependency-version: [prefer-lowest, prefer-stable] include: - laravel: 7.* testbench: 5.* - laravel: 6.* testbench: 4.* - - laravel: 5.8.* - testbench: 3.8.* name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - ${{ matrix.os }} diff --git a/composer.json b/composer.json index b96518f..5425693 100644 --- a/composer.json +++ b/composer.json @@ -29,11 +29,11 @@ "clue/redis-react": "^2.3", "facade/ignition-contracts": "^1.0", "guzzlehttp/psr7": "^1.5", - "illuminate/broadcasting": "5.8.*|^6.0|^7.0", - "illuminate/console": "5.8.*|^6.0|^7.0", - "illuminate/http": "5.8.*|^6.0|^7.0", - "illuminate/routing": "5.8.*|^6.0|^7.0", - "illuminate/support": "5.8.*|^6.0|^7.0", + "illuminate/broadcasting": "^6.0|^7.0", + "illuminate/console": "^6.0|^7.0", + "illuminate/http": "^6.0|^7.0", + "illuminate/routing": "^6.0|^7.0", + "illuminate/support": "^6.0|^7.0", "pusher/pusher-php-server": "^3.0|^4.0", "react/dns": "^1.1", "symfony/http-kernel": "^4.0|^5.0",