[TASK] Inital State

This commit is contained in:
chrosey
2020-01-13 16:09:25 +01:00
parent 0cef46b3b2
commit 42c50342ab
66 changed files with 53145 additions and 12594 deletions
+48
View File
@@ -0,0 +1,48 @@
<?php
declare(strict_types=1);
use DI\Container;
use Illuminate\Database\Capsule\Manager as Capsule;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/env.php';
$container = new Container();
AppFactory::setContainer($container);
$container->set('view', static function () {
return Twig::create(__DIR__ . '/../templates', []);
});
$container->set('db', static function () {
$capsule = new Capsule();
$capsule->addConnection([
'driver' => getenv('DB_DRIVER'),
'host' => getenv('DB_HOST'),
'database' => getenv('DB_NAME'),
'username' => getenv('DB_USER'),
'password' => getenv('DB_PASSWORD'),
'charset' => getenv('DB_CHARSET'),
'collation' => getenv('DB_COLLATION'),
'prefix' => getenv('DB_PREFIX'),
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
return $capsule;
});
$container->set('upload_directory', __DIR__ . '/../data/uploads');
$app = AppFactory::create();
$app->add(TwigMiddleware::createFromContainer($app));
require 'routes.php';
return $app;
+3
View File
@@ -0,0 +1,3 @@
<?php
declare(strict_types=1);
+7
View File
@@ -0,0 +1,7 @@
<?php
declare(strict_types=1);
$container->set('view', static function () {
return Twig::create(__DIR__ . '/../templates', []);
});
+8
View File
@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
use Dotenv\Dotenv;
$dotenv = Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
+70
View File
@@ -0,0 +1,70 @@
<?php
declare(strict_types=1);
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Psr7\Stream;
use Slim\Psr7\UploadedFile;
use Slim\Routing\RouteCollectorProxy;
$app->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 . '<br/>');
}
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 . '<br/>');
}
return $response;
});
});
/**
* 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;
}