nextcloud-app-radio/lib/Controller/StationController.php

123 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
/**
* Radio App.
*
* @author Jonas Heinrich
* @copyright 2021 Jonas Heinrich <onny@project-insanity.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library 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 library. If not, see <http://www.gnu.org/licenses/>.
*/
namespace OCA\Radio\Controller;
use OCA\Radio\AppInfo\Application;
use OCA\Radio\Db\Station;
use OCA\Radio\Service\RadioBrowserApiService;
use OCA\Radio\Service\RecentService;
use OCA\Radio\Service\UserService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
class StationController extends Controller
{
use Errors;
public function __construct(
IRequest $request,
private readonly RecentService $service,
private readonly RadioBrowserApiService $radiobrowserapi,
private readonly UserService $user,
) {
parent::__construct(Application::APP_ID, $request);
}
#[NoAdminRequired]
public function index(): DataResponse {
return new DataResponse($this->service->findAll($this->user->getUserUID()));
}
#[NoAdminRequired]
public function show(int $id): DataResponse {
return $this->handleNotFound(fn (): ?Station => $this->service->find($id, $this->user->getUserUID()));
}
#[NoAdminRequired]
public function create(
string $stationuuid,
string $name,
string $favicon,
string $urlresolved,
string $bitrate,
string $country,
string $language,
string $homepage,
string $codec,
string $tags
): DataResponse {
return new DataResponse($this->service->create(
$stationuuid,
$name,
$favicon,
$urlresolved,
$bitrate,
$country,
$language,
$homepage,
$codec,
$tags,
$this->user->getUserUID()
));
}
#[NoAdminRequired]
public function update(
int $id,
string $stationuuid,
string $name,
string $favicon,
string $urlresolved,
string $bitrate,
string $country,
string $language,
string $homepage,
string $codec,
string $tags
): DataResponse {
return $this->handleNotFound(fn (): ?Station => $this->service->update(
$id,
$stationuuid,
$name,
$favicon,
$urlresolved,
$bitrate,
$country,
$language,
$homepage,
$codec,
$tags,
$this->user->getUserUID()
));
}
#[NoAdminRequired]
public function destroy(int $id): DataResponse {
return $this->handleNotFound(fn (): ?Station => $this->service->delete($id, $this->user->getUserUID()));
}
}