get('/', function (Request $request, Response $response, $args) { return $this->get('view')->render($response, 'frontend.html', []); })->setName('frontend'); $app->group('/api', function (RouteCollectorProxy $group): void { $group->post('/artikel', function (Request $request, Response $response, $args) { $directory = $this->get('upload_directory'); $uploadedFile = $request->getUploadedFiles()['articles']; if ($uploadedFile->getError() === UPLOAD_ERR_OK) { $filename = moveUploadedFile($directory, $uploadedFile); $response->write('uploaded ' . $filename . '
'); } return $response; }); $group->get('/artikel/theater', function (Request $request, Response $response, $args) { $file = __DIR__ . '/../data/articles.theater.json'; $fh = fopen($file, 'rb'); $stream = new Stream($fh); return $response ->withHeader('Content-Type', 'application/json') ->withBody($stream); }); $group->post('/inventur', function (Request $request, Response $response, $args) { $directory = $this->get('upload_directory'); $uploadedFile = $request->getUploadedFiles()['file']; if ($uploadedFile->getError() === UPLOAD_ERR_OK) { $filename = moveUploadedFile($directory, $uploadedFile); $response->getBody()->write('uploaded ' . $filename . '
'); } return $response; }); $group->get('/excel', SpreadsheetController::class . ':create'); $group->get('/excel/download', SpreadsheetController::class . ':download'); }); $app->get('/migrate', DatabaseController::class . ':migrate')->setName('migrate'); $app->get('/seed', DatabaseController::class . ':seed')->setName('seed'); /** * Move Uploaded File to Target Destination * * Create random hexName * * @param String $directory Target Direcotry * @param UploadedFile $uploadedFile the File that was uploaded **/ function moveUploadedFile(string $directory, UploadedFile $uploadedFile): string { $extension = pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION); $basename = bin2hex(random_bytes(8)); // see http://php.net/manual/en/function.random-bytes.php $filename = sprintf('%s.%0.8s', $basename, $extension); $uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename); return $filename; }