mirror of
https://github.com/shlinkio/shlink.git
synced 2024-11-28 09:03:07 +03:00
Finished health action implementation
This commit is contained in:
parent
3f65ef998c
commit
0f86123ccb
4 changed files with 9 additions and 14 deletions
|
@ -14,7 +14,6 @@ abstract class AbstractRestAction implements RequestHandlerInterface, RequestMet
|
||||||
{
|
{
|
||||||
protected const ROUTE_PATH = '';
|
protected const ROUTE_PATH = '';
|
||||||
protected const ROUTE_ALLOWED_METHODS = [];
|
protected const ROUTE_ALLOWED_METHODS = [];
|
||||||
protected const ROUTE_CAN_BE_VERSIONED = true;
|
|
||||||
|
|
||||||
/** @var LoggerInterface */
|
/** @var LoggerInterface */
|
||||||
protected $logger;
|
protected $logger;
|
||||||
|
@ -31,7 +30,6 @@ abstract class AbstractRestAction implements RequestHandlerInterface, RequestMet
|
||||||
'middleware' => array_merge($prevMiddleware, [static::class], $postMiddleware),
|
'middleware' => array_merge($prevMiddleware, [static::class], $postMiddleware),
|
||||||
'path' => static::ROUTE_PATH,
|
'path' => static::ROUTE_PATH,
|
||||||
'allowed_methods' => static::ROUTE_ALLOWED_METHODS,
|
'allowed_methods' => static::ROUTE_ALLOWED_METHODS,
|
||||||
'can_be_versioned' => static::ROUTE_CAN_BE_VERSIONED,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,10 +13,11 @@ use Zend\Diactoros\Response\JsonResponse;
|
||||||
class HealthAction extends AbstractRestAction
|
class HealthAction extends AbstractRestAction
|
||||||
{
|
{
|
||||||
private const HEALTH_CONTENT_TYPE = 'application/health+json';
|
private const HEALTH_CONTENT_TYPE = 'application/health+json';
|
||||||
|
private const PASS_STATUS = 'pass';
|
||||||
|
private const FAIL_STATUS = 'fail';
|
||||||
|
|
||||||
protected const ROUTE_PATH = '/health';
|
protected const ROUTE_PATH = '/health';
|
||||||
protected const ROUTE_ALLOWED_METHODS = [self::METHOD_GET];
|
protected const ROUTE_ALLOWED_METHODS = [self::METHOD_GET];
|
||||||
protected const ROUTE_CAN_BE_VERSIONED = false;
|
|
||||||
|
|
||||||
/** @var AppOptions */
|
/** @var AppOptions */
|
||||||
private $options;
|
private $options;
|
||||||
|
@ -41,7 +42,7 @@ class HealthAction extends AbstractRestAction
|
||||||
$statusCode = $connected ? self::STATUS_OK : self::STATUS_SERVICE_UNAVAILABLE;
|
$statusCode = $connected ? self::STATUS_OK : self::STATUS_SERVICE_UNAVAILABLE;
|
||||||
|
|
||||||
return new JsonResponse([
|
return new JsonResponse([
|
||||||
'status' => $connected ? 'pass' : 'fail',
|
'status' => $connected ? self::PASS_STATUS : self::FAIL_STATUS,
|
||||||
'version' => $this->options->getVersion(),
|
'version' => $this->options->getVersion(),
|
||||||
'links' => [
|
'links' => [
|
||||||
'about' => 'https://shlink.io',
|
'about' => 'https://shlink.io',
|
||||||
|
|
|
@ -9,8 +9,7 @@ use function sprintf;
|
||||||
|
|
||||||
class ConfigProvider
|
class ConfigProvider
|
||||||
{
|
{
|
||||||
private const ROUTES_PREFIX = '/rest';
|
private const ROUTES_PREFIX = '/rest/v{version:1}';
|
||||||
private const ROUTES_VERSION_PARAM = '/v{version:1}';
|
|
||||||
|
|
||||||
public function __invoke()
|
public function __invoke()
|
||||||
{
|
{
|
||||||
|
@ -25,14 +24,8 @@ class ConfigProvider
|
||||||
|
|
||||||
// Prepend the routes prefix to every path
|
// Prepend the routes prefix to every path
|
||||||
foreach ($routes as $key => $route) {
|
foreach ($routes as $key => $route) {
|
||||||
['can_be_versioned' => $routeCanBeVersioned, 'path' => $path] = $route;
|
['path' => $path] = $route;
|
||||||
$routes[$key]['path'] = sprintf(
|
$routes[$key]['path'] = sprintf('%s%s', self::ROUTES_PREFIX, $path);
|
||||||
'%s%s%s',
|
|
||||||
self::ROUTES_PREFIX,
|
|
||||||
$routeCanBeVersioned ? self::ROUTES_VERSION_PARAM : '',
|
|
||||||
$path
|
|
||||||
);
|
|
||||||
unset($routes[$key]['can_be_versioned']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
|
|
|
@ -11,6 +11,9 @@ use function strpos;
|
||||||
|
|
||||||
class PathVersionMiddleware implements MiddlewareInterface
|
class PathVersionMiddleware implements MiddlewareInterface
|
||||||
{
|
{
|
||||||
|
// TODO The /health endpoint needs this middleware in order to work without the version.
|
||||||
|
// Take it into account if this middleware is ever removed.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process an incoming server request and return a response, optionally delegating
|
* Process an incoming server request and return a response, optionally delegating
|
||||||
* to the next middleware component to create the response.
|
* to the next middleware component to create the response.
|
||||||
|
|
Loading…
Reference in a new issue