2020-11-07 09:41:37 +00:00
|
|
|
<?php
|
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
2020-11-24 14:16:53 +00:00
|
|
|
/**
|
2024-11-19 19:41:46 +00:00
|
|
|
* Radio App.
|
2020-11-24 14:16:53 +00:00
|
|
|
*
|
|
|
|
* @author Jonas Heinrich
|
2021-01-15 10:21:53 +00:00
|
|
|
* @copyright 2021 Jonas Heinrich <onny@project-insanity.org>
|
2020-11-24 14:16:53 +00:00
|
|
|
*
|
|
|
|
* 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/>.
|
|
|
|
*/
|
|
|
|
|
2020-11-07 09:41:37 +00:00
|
|
|
namespace OCA\Radio\Controller;
|
|
|
|
|
|
|
|
use OCA\Radio\AppInfo\Application;
|
2024-11-19 19:41:46 +00:00
|
|
|
use OCA\Radio\Db\Station;
|
2020-11-13 12:17:05 +00:00
|
|
|
use OCA\Radio\Service\FavoriteService;
|
2024-11-19 19:41:46 +00:00
|
|
|
use OCA\Radio\Service\UserService;
|
2020-11-07 09:41:37 +00:00
|
|
|
use OCP\AppFramework\Controller;
|
2024-11-19 19:41:46 +00:00
|
|
|
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
2020-11-07 09:41:37 +00:00
|
|
|
use OCP\AppFramework\Http\DataResponse;
|
|
|
|
use OCP\IRequest;
|
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
class FavoriteController extends Controller
|
|
|
|
{
|
2020-11-09 09:46:10 +00:00
|
|
|
use Errors;
|
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
public function __construct(
|
|
|
|
IRequest $request,
|
|
|
|
private readonly FavoriteService $service,
|
|
|
|
private readonly UserService $user,
|
|
|
|
) {
|
2020-11-07 09:41:37 +00:00
|
|
|
parent::__construct(Application::APP_ID, $request);
|
|
|
|
}
|
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
#[NoAdminRequired]
|
2020-11-07 09:41:37 +00:00
|
|
|
public function index(): DataResponse {
|
2024-11-19 19:41:46 +00:00
|
|
|
return new DataResponse($this->service->findAll($this->user->getUserUID()));
|
2020-11-07 09:41:37 +00:00
|
|
|
}
|
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
#[NoAdminRequired]
|
2020-11-07 09:41:37 +00:00
|
|
|
public function show(int $id): DataResponse {
|
2024-11-19 19:41:46 +00:00
|
|
|
return $this->handleNotFound(fn (): ?Station => $this->service->find($id, $this->user->getUserUID()));
|
2020-11-07 09:41:37 +00:00
|
|
|
}
|
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
#[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()
|
|
|
|
));
|
|
|
|
}
|
2020-11-07 09:41:37 +00:00
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
#[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()
|
|
|
|
));
|
|
|
|
}
|
2020-11-07 09:41:37 +00:00
|
|
|
|
2024-11-19 19:41:46 +00:00
|
|
|
#[NoAdminRequired]
|
2020-11-07 09:41:37 +00:00
|
|
|
public function destroy(int $id): DataResponse {
|
2024-11-19 19:41:46 +00:00
|
|
|
return $this->handleNotFound(fn (): ?Station => $this->service->delete($id, $this->user->getUserUID()));
|
2020-11-07 09:41:37 +00:00
|
|
|
}
|
|
|
|
}
|