Moved api enabled logic from handler to server
This commit is contained in:
parent
d8ae8ade70
commit
018c88e0b6
@ -32,37 +32,8 @@ class ApiHandler
|
|||||||
return new Promise(
|
return new Promise(
|
||||||
function (callable $resolve, callable $reject) use ($next, $request) {
|
function (callable $resolve, callable $reject) use ($next, $request) {
|
||||||
|
|
||||||
if (!$this->config->get('server.enable_api', true)) {
|
|
||||||
$resolve($next($request));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$path = $request->getUri()->getPath();
|
$path = $request->getUri()->getPath();
|
||||||
|
|
||||||
// FIXME remove this when done debugging
|
|
||||||
if ($path === "/index.html") {
|
|
||||||
$resolve(Response::html(
|
|
||||||
<<<ENDHTML
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script type="text/javascript">
|
|
||||||
const events = new EventSource("http://127.0.0.1:9000/.well-known/mercure?topic=https://example.com/books/1");
|
|
||||||
events.onmessage = function (msg) {
|
|
||||||
console.log(msg);
|
|
||||||
const message = document.createElement('div');
|
|
||||||
message.innerText = msg.data;
|
|
||||||
document.getElementById('messages').appendChild(message);
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<div id="messages">
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
ENDHTML
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case preg_match('<^/.well-known/mercure/subscriptions(/.+?){0,1}$>', $path, $m):
|
case preg_match('<^/.well-known/mercure/subscriptions(/.+?){0,1}$>', $path, $m):
|
||||||
$query = explode("/", trim($m[1]??null, "/"));
|
$query = explode("/", trim($m[1]??null, "/"));
|
||||||
|
@ -29,7 +29,7 @@ class Server
|
|||||||
|
|
||||||
private LoopInterface $loop;
|
private LoopInterface $loop;
|
||||||
|
|
||||||
private HttpServer $server;
|
private ?HttpServer $server = null;
|
||||||
|
|
||||||
private SplObjectStorage $webSocketClients;
|
private SplObjectStorage $webSocketClients;
|
||||||
|
|
||||||
@ -37,14 +37,6 @@ class Server
|
|||||||
|
|
||||||
private Logger $logger;
|
private Logger $logger;
|
||||||
|
|
||||||
private ResponseMiddleware $responseMiddleware;
|
|
||||||
private SecurityMiddleware $securityMiddleware;
|
|
||||||
private WebSocketHandler $webSocketHandler;
|
|
||||||
private MercureHandler $mercureHandler;
|
|
||||||
private ApiHandler $apiRequestHandler;
|
|
||||||
private NotFoundHandler $notFoundHandler;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@ -68,8 +60,6 @@ class Server
|
|||||||
});
|
});
|
||||||
|
|
||||||
$this->webSocketClients = new SplObjectStorage();
|
$this->webSocketClients = new SplObjectStorage();
|
||||||
|
|
||||||
$this->server = $this->createHttpServer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,6 +69,10 @@ class Server
|
|||||||
*/
|
*/
|
||||||
public function listen(ServerInterface $socket): void
|
public function listen(ServerInterface $socket): void
|
||||||
{
|
{
|
||||||
|
if (!$this->server) {
|
||||||
|
$this->server = $this->createHttpServer();
|
||||||
|
}
|
||||||
|
|
||||||
$this->server->listen($socket);
|
$this->server->listen($socket);
|
||||||
$this->logger->info(sprintf(
|
$this->logger->info(sprintf(
|
||||||
"Listening on %s",
|
"Listening on %s",
|
||||||
@ -100,38 +94,37 @@ class Server
|
|||||||
$stack[] = new LimitConcurrentRequestsMiddleware($maxConcurrent);
|
$stack[] = new LimitConcurrentRequestsMiddleware($maxConcurrent);
|
||||||
$stack[] = new RequestBodyBufferMiddleware($maxRequestBody);
|
$stack[] = new RequestBodyBufferMiddleware($maxRequestBody);
|
||||||
|
|
||||||
$stack = [ ...$stack,
|
$stack[] = new ResponseMiddleware(
|
||||||
$this->responseMiddleware = new ResponseMiddleware(
|
|
||||||
config: $this->config,
|
config: $this->config,
|
||||||
logger: $this->logger->withName("http"),
|
logger: $this->logger->withName("http"),
|
||||||
),
|
);
|
||||||
$this->securityMiddleware = new SecurityMiddleware(
|
$stack[] = new SecurityMiddleware(
|
||||||
config: $this->config
|
config: $this->config
|
||||||
),
|
);
|
||||||
];
|
|
||||||
|
|
||||||
if ($this->config->getEnableWebSockets()) {
|
if ($this->config->getEnableWebSockets()) {
|
||||||
$stack = [ ...$stack,
|
$stack[] = $webSocketHandler = new WebSocketHandler(
|
||||||
$this->webSocketHandler = new WebSocketHandler(
|
|
||||||
config: $this->config,
|
config: $this->config,
|
||||||
webSocketClients: $this->webSocketClients,
|
webSocketClients: $this->webSocketClients,
|
||||||
topicManager: $this->topicManager
|
topicManager: $this->topicManager
|
||||||
),
|
);
|
||||||
];
|
|
||||||
$this->logger->warning("The WebSocket support is incomplete and insecure, but enabling it as requested.");
|
$this->logger->warning("The WebSocket support is incomplete and insecure, but enabling it as requested.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$stack = [ ...$stack,
|
$stack[] = new MercureHandler(
|
||||||
$this->mercureHandler = new MercureHandler(
|
|
||||||
config: $this->config,
|
config: $this->config,
|
||||||
topicManager: $this->topicManager
|
topicManager: $this->topicManager
|
||||||
),
|
);
|
||||||
$this->apiRequestHandler = new ApiHandler(
|
|
||||||
|
if ($this->config->get('server.enable_api', true)) {
|
||||||
|
$stack[] = new ApiHandler(
|
||||||
config: $this->config,
|
config: $this->config,
|
||||||
topicManager: $this->topicManager
|
topicManager: $this->topicManager
|
||||||
),
|
);
|
||||||
$this->notFoundHandler = new NotFoundHandler()
|
$this->logger->info("Enabling the API middleware");
|
||||||
];
|
}
|
||||||
|
|
||||||
|
$stack[] = new NotFoundHandler();
|
||||||
|
|
||||||
return new HttpServer(...$stack);
|
return new HttpServer(...$stack);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user