factory = $factory; $this->service = $service; } public function __invoke(Request $request, Handler $handler): Response { if ($request->getMethod() == 'OPTIONS') { return $handler->handle($request); } if (!$this->service->isValid($request)) { $response = $this->factory->createResponse(401); $response->getBody()->write(json_encode(['message' => 'Invalid API KEY.'])); return $response ->withHeader('Content-Type', 'application/json'); } return $handler->handle($request); } }