You've already forked Traefik-Redis-Api
75 lines
2.0 KiB
PHP
75 lines
2.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Siteworxpro\App\Controllers;
|
|
|
|
use Nyholm\Psr7\ServerRequest;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
|
use Siteworxpro\App\Traefik\EntityEnum;
|
|
use Siteworxpro\App\Facades\RedisClient;
|
|
|
|
class RoutesController extends Controller
|
|
{
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function get(ServerRequest $request): ResponseInterface
|
|
{
|
|
if ($request->getAttribute('id') !== null) {
|
|
$name = $request->getAttribute('id');
|
|
|
|
return JsonResponseFactory::createJsonResponse(
|
|
RedisClient::getRouter($name, $this->protocolEnumFromRequest($request))
|
|
);
|
|
}
|
|
|
|
return JsonResponseFactory::createJsonResponse(
|
|
RedisClient::getAllRouters($this->protocolEnumFromRequest($request))
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function post(ServerRequest $request): ResponseInterface
|
|
{
|
|
$data = $request->getParsedBody();
|
|
$name = $request->getAttribute('id');
|
|
|
|
if (empty($data['service'])) {
|
|
return JsonResponseFactory::createJsonResponse(['error' => 'Service is required'], 400);
|
|
}
|
|
|
|
if (empty($data['rule'])) {
|
|
return JsonResponseFactory::createJsonResponse(['error' => 'Rule is required'], 400);
|
|
}
|
|
|
|
RedisClient::createOrReplace(
|
|
$name,
|
|
$data,
|
|
EntityEnum::ROUTER,
|
|
$this->protocolEnumFromRequest($request)
|
|
);
|
|
|
|
return JsonResponseFactory::createJsonResponse(['message' => 'Router created successfully']);
|
|
}
|
|
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function delete(ServerRequest $request): ResponseInterface
|
|
{
|
|
$name = $request->getAttribute('id');
|
|
|
|
RedisClient::deleteAllKeys(
|
|
$name,
|
|
EntityEnum::ROUTER,
|
|
$this->protocolEnumFromRequest($request)
|
|
);
|
|
|
|
return JsonResponseFactory::createJsonResponse(['message' => 'Router deleted successfully']);
|
|
}
|
|
}
|