Browse Source

Add an API endpoint to set the lobby state

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/1926/head
Joas Schilling 7 years ago
committed by Daniel Calviño Sánchez
parent
commit
d8563f8824
  1. 13
      appinfo/routes.php
  2. 4
      docs/constants.md
  3. 21
      docs/webinary.md
  4. 52
      lib/Controller/WebinaryController.php

13
appinfo/routes.php

@ -392,6 +392,19 @@ return [
'id' => '^\d+$',
],
],
/**
* Webinary
*/
[
'name' => 'Webinary#setLobbyState',
'url' => '/api/{apiVersion}/room/{token}/webinary/lobby',
'verb' => 'PUT',
'requirements' => [
'apiVersion' => 'v1',
'token' => '^[a-z0-9]{4,30}$',
],
],
],
];

4
docs/constants.md

@ -24,3 +24,7 @@ title: Constants
* `guests` - guest users
* `users` - logged-in users
* `bots` - used by commands (actor-id is the used `/command`) and the changelog conversation (actor-id is `changelog`)
## Webinary lobby states
* `0` all participants
* `1` moderators only

21
docs/webinary.md

@ -0,0 +1,21 @@
# Webinary management
Base endpoint is: `/ocs/v2.php/apps/spreed/api/v1`
## Set lobby for a conversation
* Required capability: `webinary-lobby`
* Method: `PUT`
* Endpoint: `/room/{token}/webinary/lobby`
* Data:
field | type | Description
------|------|------------
`state` | int | New state for the conversation
* Response:
- Header:
+ `200 OK`
+ `400 Bad Request` When the conversation type does not support lobby (only group and public conversation atm)
+ `403 Forbidden` When the current user is not a moderator/owner
+ `404 Not Found` When the conversation could not be found for the participant

52
lib/Controller/WebinaryController.php

@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
*
* @author Joas Schilling <coding@schilljs.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Spreed\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
class WebinaryController extends AEnvironmentAwareController {
public function __construct(string $appName,
IRequest $request) {
parent::__construct($appName, $request);
}
/**
* @NoAdminRequired
* @RequireModeratorParticipant
*
* @param int $state
* @return DataResponse
*/
public function setLobbyState(int $state): DataResponse {
if (!$this->room->setLobbyState($state)) {
return new DataResponse([], Http::STATUS_BAD_REQUEST);
}
return new DataResponse();
}
}
Loading…
Cancel
Save