%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Controller/Admin/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Controller/Admin/CacheController.php |
<?php
/**
* This file is part of the Passwords App
* created by Marius David Wieschollek
* and licensed under the AGPL.
*/
namespace OCA\Passwords\Controller\Admin;
use OCA\Passwords\Exception\ApiException;
use OCA\Passwords\Services\ConfigurationService;
use OCA\Passwords\Services\FileCacheService;
use OCP\AppFramework\ApiController;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
use Throwable;
/**
* Class CacheController
*
* @package OCA\Passwords\Controller\Admin
*/
class CacheController extends ApiController {
/**
* @var FileCacheService
*/
protected FileCacheService $fileCacheService;
/**
* @var ConfigurationService
*/
protected ConfigurationService $config;
/**
* @var array
*/
protected array $cacheLabels
= [
FileCacheService::DEFAULT_CACHE => 'Default Cache',
FileCacheService::AVATAR_CACHE => 'Avatar Cache',
FileCacheService::FAVICON_CACHE => 'Favicon Cache',
FileCacheService::PREVIEW_CACHE => 'Preview Cache',
FileCacheService::PASSWORDS_CACHE => 'Password Cache',
];
/**
* CacheController constructor.
*
* @param string $appName
* @param IRequest $request
* @param FileCacheService $fileCacheService
* @param ConfigurationService $config
*/
public function __construct(
string $appName,
IRequest $request,
FileCacheService $fileCacheService,
ConfigurationService $config
) {
parent::__construct(
$appName,
$request,
'GET, DELETE'
);
$this->fileCacheService = $fileCacheService;
$this->config = $config;
}
/**
* @return JSONResponse
*/
public function index(): JSONResponse {
$info = $this->getCaches();
return new JSONResponse($info);
}
/**
* @param $id
*
* @return JSONResponse
* @throws ApiException
*/
public function show($id): JSONResponse {
$info = $this->getCaches();
if(isset($info[ $id ])) {
return new JSONResponse($info[ $id ]);
}
throw new ApiException('Cache not found', Http::STATUS_NOT_FOUND);
}
/**
* @param $id
*
* @return JSONResponse
* @throws ApiException
*/
public function destroy($id): JSONResponse {
$info = $this->getCaches();
if(!isset($info[ $id ])) {
throw new ApiException('Cache not found', Http::STATUS_NOT_FOUND);
} else if($info[ $id ]['clearable']) {
$this->fileCacheService->clearCache($id);
} else {
throw new ApiException('Cache not clearable', Http::STATUS_UNAUTHORIZED);
}
return $this->show($id);
}
/**
* @return array
*/
protected function getCaches(): array {
$caches = $this->fileCacheService->listCaches();
$info = [];
foreach ($caches as $cache) {
try {
$info[ $cache ] = $this->fileCacheService->getCacheInfo($cache);
$info[ $cache ]['name'] = $cache;
$info[ $cache ]['clearable'] = true;
if(isset($this->cacheLabels[ $cache ])) {
$info[ $cache ]['label'] = $this->cacheLabels[ $cache ];
} else {
$info[ $cache ]['label'] = '';
}
} catch (Throwable $e) {
}
}
return $info;
}
}