private function addRoutesFromMeta(Slim $application, ClassMetadata $meta, Controller $controller) { $entitiesRoute = $this->getEntitiesRoute($meta); // Fetch entities route $application->get($entitiesRoute, function () use($meta, $controller) { $controller->getEntities($meta); }); // Create entity $application->post($entitiesRoute, function () use($meta, $controller) { $controller->createEntity($meta); }); $entityRoute = $this->getEntityRoute($meta, $entitiesRoute); // Get entity $application->get($entityRoute, function () use($meta, $controller) { $controller->getEntity($meta, func_get_args()); }); // Update entity $application->put($entityRoute, function () use($meta, $controller) { $controller->updateEntity($meta, func_get_args()); }); // Patch entity $application->patch($entityRoute, function () use($meta, $controller) { $controller->patchEntity($meta, func_get_args()); }); // Delete entity $application->delete($entityRoute, function () use($meta, $controller) { $controller->deleteEntity($meta, func_get_args()); }); // Handling associated entities foreach ($meta->getAssociationMappings() as $aName => $aData) { $aTargetClass = $meta->getAssociationTargetClass($aName); $aMeta = $this->getEntityMeta($aTargetClass); $aEntitiesRoute = $entityRoute . '/' . $aName; // Create associated entity // allow to create entity and link source together // POST /articles/1/tags will fetch article 1, create tag entity and // associate it to article 1 $application->post($aEntitiesRoute, function () use($meta, $aMeta, $controller, $aData) { $controller->createEntity($aMeta, $aData['fieldName'], $meta, func_get_args()); }); // List associated entities $application->get($aEntitiesRoute, function () use($meta, $controller, $aData) { $controller->getAssociatedEntities($aData['fieldName'], $meta, func_get_args()); }); // Associate two entities // POST /articles/1/tags/2 will associate article 1 to tag 2 $aEntityRoute = $this->getEntityRoute($aMeta, $aEntitiesRoute); $application->post($aEntityRoute, function () use($meta, $aMeta, $controller, $aData) { $controller->associateEntities($aMeta, $aData['fieldName'], $meta, func_get_args()); }); } return $application; }
} $app = new Slim(['mode' => $slimMode, 'debug' => $debug, 'view' => $di->layoutHtml]); // Allow to decode json request body $app->add(new ContentTypesMiddleware()); $app->get('/auth/login', function () use($app) { $app->render('auth/login'); }); $app->get('/auth/twitter/login', function () { AuthTwitterController::getInstance()->login(); }); $app->get('/auth/twitter/callback', function () { AuthTwitterController::getInstance()->callback(); }); $app->get('/auth/logout', function () { AuthentifierController::getInstance()->logout(); }); $app->get('/home', function () { HomeController::getInstance()->home(); }); $app->get('/api/articles', function () { ArticlesController::getInstance()->get(); }); $app->patch('/api/articles/:id', function ($id) { ArticlesController::getInstance()->update($id); }); $app->notFound(function () use($app) { $status = 404; $app->response->setStatus($status); $app->render('error', ['errno' => $status, 'message' => $app->response->getMessageForCode($status)]); }); return $app;
| "/emojis" get all emoji from the database */ $app->get('/emojis', function () use($emojiController) { $emojiController->all(); }); /* | "/emojis" create new emoji */ $app->put('/emojis', $authenticated, function () use($emojiController) { $emojiController->addEmoji(); }); /* | "/emojis" update emoji */ $app->patch('/emojis/:id', $authenticated, function ($id) use($emojiController) { $emojiController->updateEmoji($id); }); /* | "/emojis" find an emoji by id | POST method */ $app->get('/emojis/:id', function ($id) use($emojiController) { $emojiController->findEmoji($id); }); /* | "/emojis/:id" find and delete an emoji by id | DELETE method */ $app->delete('/emojis/:id', function ($id) use($emojiController) { $emojiController->deleteEmoji($id); });
echo '{"error":{"text":' . $e->getMessage() . '}}'; } }); /** * Route to partially update an emoji. */ $app->patch('/emojis/:id', function ($id) use($app) { try { $app->response()->headers("Content-Type", "application/json"); $authHeader = $app->request->headers->get('Authorization'); $decodedToken = Reusable::tokenVerify($authHeader); if ($decodedToken) { $emoji = json_decode($app->request->getBody(), true); $emojiUpdate = Emoji::with('user')->where('id', $id)->first(); if ($emojiUpdate->user->token !== 1) { echo json_encode(array("status" => "Bad request", "message" => "Log in to partially update the emoji!")); } else { $emojiUpdate->update($emoji); echo json_encode(array("status" => "success", "message" => "Emoji partially updated!")); } } } catch (\PDOException $e) { echo '{"error":{"text":' . $e->getMessage() . '}}'; } }); /** * Route to delete an emoji. */ $app->delete('/emojis/:id', function ($id) use($app) { try { $app->response()->headers("Content-Type", "application/json");