summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-09-14 12:23:10 +0100
committerGreg Roach <fisharebest@webtrees.net>2019-09-14 12:36:04 +0100
commitefe93098cb9072f1f0ff59553700962867f55406 (patch)
tree61a6bf97116efde19181661da58404d5d1d9e1f6
parent2a12145e7f760890eda12b3daadeb18fbf63c238 (diff)
downloadwebtrees-efe93098cb9072f1f0ff59553700962867f55406.tar.gz
webtrees-efe93098cb9072f1f0ff59553700962867f55406.tar.bz2
webtrees-efe93098cb9072f1f0ff59553700962867f55406.zip
Fix: #2549 - respond to 'ping' to confirm server status
-rw-r--r--app/Http/RequestHandlers/Ping.php59
-rw-r--r--routes/web.php2
2 files changed, 61 insertions, 0 deletions
diff --git a/app/Http/RequestHandlers/Ping.php b/app/Http/RequestHandlers/Ping.php
new file mode 100644
index 0000000000..28bd065d4d
--- /dev/null
+++ b/app/Http/RequestHandlers/Ping.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * webtrees: online genealogy
+ * Copyright (C) 2019 webtrees development team
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program 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 General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+declare(strict_types=1);
+
+namespace Fisharebest\Webtrees\Http\RequestHandlers;
+
+use Fisharebest\Webtrees\Services\ServerCheckService;
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\ServerRequestInterface;
+use Psr\Http\Server\RequestHandlerInterface;
+use function response;
+
+/**
+ * Check the server is up.
+ */
+class Ping implements RequestHandlerInterface
+{
+ /** @var ServerCheckService */
+ private $server_check_service;
+
+ /**
+ * @param ServerCheckService $server_check_service
+ */
+ public function __construct(ServerCheckService $server_check_service)
+ {
+ $this->server_check_service = $server_check_service;
+ }
+
+ /**
+ * @param ServerRequestInterface $request
+ *
+ * @return ResponseInterface
+ */
+ public function handle(ServerRequestInterface $request): ResponseInterface
+ {
+ if ($this->server_check_service->serverErrors()->isNotEmpty()) {
+ return response('ERROR');
+ }
+
+ if ($this->server_check_service->serverWarnings()->isNotEmpty()) {
+ return response('WARNING');
+ }
+
+ return response('OK');
+ }
+}
diff --git a/routes/web.php b/routes/web.php
index 5fca869c05..c5d8962d0a 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -20,6 +20,7 @@ namespace Fisharebest\Webtrees;
use Fisharebest\Webtrees\Http\RequestHandlers\DeleteUser;
use Fisharebest\Webtrees\Http\RequestHandlers\MasqueradeAsUser;
use Fisharebest\Webtrees\Http\RequestHandlers\ModuleAction;
+use Fisharebest\Webtrees\Http\RequestHandlers\Ping;
use Fisharebest\Webtrees\Http\RequestHandlers\PrivacyPolicy;
use Fisharebest\Webtrees\Http\RequestHandlers\SelectLanguage;
use Fisharebest\Webtrees\Http\RequestHandlers\SelectTheme;
@@ -320,6 +321,7 @@ $routes += [
'GET:privacy-policy' => PrivacyPolicy::class,
'GET:module' => ModuleAction::class,
'POST:module' => ModuleAction::class,
+ 'GET:ping' => Ping::class,
];
return $routes;