diff --git a/src/app/Console/Commands/OpenVidu/RoomCreate.php b/src/app/Console/Commands/OpenVidu/RoomCreate.php new file mode 100644 index 00000000..b9343780 --- /dev/null +++ b/src/app/Console/Commands/OpenVidu/RoomCreate.php @@ -0,0 +1,67 @@ +argument('user'))->first(); + + if (!$user) { + return 1; + } + + $roomName = $this->argument('room'); + + if (!preg_match('/^[a-zA-Z0-9_-]{1,16}$/', $roomName)) { + $this->error("Invalid room name. Should be up to 16 characters ([a-zA-Z0-9_-])."); + return 1; + } + + $room = \App\OpenVidu\Room::where('name', $roomName)->first(); + + if ($room) { + $this->error("Room already exists."); + return 1; + } + + \App\OpenVidu\Room::create( + [ + 'name' => $roomName, + 'user_id' => $user->id + ] + ); + } +} diff --git a/src/app/Console/Commands/OpenViduRooms.php b/src/app/Console/Commands/OpenVidu/Rooms.php similarity index 91% rename from src/app/Console/Commands/OpenViduRooms.php rename to src/app/Console/Commands/OpenVidu/Rooms.php index 77f2c265..77beabc0 100644 --- a/src/app/Console/Commands/OpenViduRooms.php +++ b/src/app/Console/Commands/OpenVidu/Rooms.php @@ -1,46 +1,46 @@ info("{$room->name}"); } } } diff --git a/src/app/Console/Commands/OpenViduSessions.php b/src/app/Console/Commands/OpenVidu/Sessions.php similarity index 96% rename from src/app/Console/Commands/OpenViduSessions.php rename to src/app/Console/Commands/OpenVidu/Sessions.php index 7f168044..6b6d8d8f 100644 --- a/src/app/Console/Commands/OpenViduSessions.php +++ b/src/app/Console/Commands/OpenVidu/Sessions.php @@ -1,82 +1,82 @@ \config('openvidu.api_url'), 'verify' => \config('openvidu.api_verify_tls') ] ); $response = $client->request( 'GET', 'sessions', ['auth' => [\config('openvidu.api_username'), \config('openvidu.api_password')]] ); if ($response->getStatusCode() !== 200) { return 1; } $sessionResponse = json_decode($response->getBody(), true); foreach ($sessionResponse['content'] as $session) { $room = \App\OpenVidu\Room::where('session_id', $session['sessionId'])->first(); if ($room) { $owner = $room->owner->email; $roomName = $room->name; } else { $owner = '(none)'; $roomName = '(none)'; } $this->info( sprintf( "Session: %s for %s since %s (by %s)", $session['sessionId'], $roomName, \Carbon\Carbon::parse((int)substr($session['createdAt'], 0, 10), 'UTC'), $owner ) ); } } } diff --git a/src/app/Console/Commands/OpenViduCreateSession.php b/src/app/Console/Commands/OpenViduCreateSession.php deleted file mode 100644 index 2607ae7e..00000000 --- a/src/app/Console/Commands/OpenViduCreateSession.php +++ /dev/null @@ -1,94 +0,0 @@ -argument('user'))->first(); - - if (!$user) { - return 1; - } - - // curl -X POST -k -u OPENVIDUAPP:MY_SECRET https://localhost:4443/api/sessions, json - $client = new \GuzzleHttp\Client( - [ - 'base_uri' => \config('openvidu.api_url'), - 'verify' => \config('openvidu.api_verify_tls') - ] - ); - - // https://docs.openvidu.io/en/2.13.0/reference-docs/REST-API/#post-apisessions - $json = [ - 'mediaMode' => 'ROUTED', - 'recordingMode' => 'MANUAL', - ]; - - if ($this->option('session-id')) { - $room = \App\OpenVidu\Room::where('session_id', $this->option('session-id'))->first(); - if ($room) { - $this->error("Room already exists."); - return 1; - } - - // TODO: [0-9a-zA-Z-_]{16} - $json['customSessionId'] = $this->option('session-id'); - } - - // TODO: observer dispatch? - $response = $client->request( - 'POST', - 'sessions', - [ - 'auth' => [\config('openvidu.api_username'), \config('openvidu.api_password')], - 'json' => $json - ] - ); - - if ($response->getStatusCode() !== 200) { - return 1; - } - - $responseJson = json_decode($response->getBody(), true); - - $room = \App\OpenVidu\Room::create( - [ - 'session_id' => $responseJson['id'], - 'user_id' => $user->id - ] - ); - } -} diff --git a/src/app/Console/Commands/OpenViduDeleteSession.php b/src/app/Console/Commands/OpenViduDeleteSession.php deleted file mode 100644 index 6c322e75..00000000 --- a/src/app/Console/Commands/OpenViduDeleteSession.php +++ /dev/null @@ -1,68 +0,0 @@ - \config('openvidu.api_url'), - 'verify' => \config('openvidu.api_verify_tls') - ] - ); - - $room = \App\OpenVidu\Room::where('session_id', $this->argument('session'))->first(); - - if ($room) { - $room->delete(); - } - // TODO: Tolerant - - // TODO: observer dispatch? - $response = $client->request( - 'DELETE', - "sessions/{$this->argument('session')}", - [ - 'auth' => [\config('openvidu.api_username'), \config('openvidu.api_password')] - ] - ); - - if ($response->getStatusCode() !== 204) { - return 1; - } - } -}