}); // The follow mapping are pretty much the same logic, but with different handlers // I will comment now only on important diferences // So here is a feature, you can map parts of the url to named parameters // In this case the sencond part of the url will be on the login parameter // See more below $server->addMap("GET", "/users/:login", function ($server) { $db = $server->getParameter("db"); // Here, on the Request, you get the named parameter $user = $server->getRequest()->getParameter("login"); $exists = $db->prepare("select count(*) from users where login = ?"); $exists->execute(array($user)); if ($exists->fetchColumn(0) == 0) { return new \Rest\Controller\NotFound(); } $login = $server->getAuthenticator()->getUser(); if ($login != $user) { return new \Rest\Controller\Forbidden(); } if (!authenticate($server)) { return new \Rest\Controller\NotAuthorized(); } $select = $db->prepare("select login, name from users where login = ?"); $select->execute(array($user)); $user = $select->fetchObject(); // There is a generic useful view for return json data // It encodes the data and send proper content-type return new \Rest\View\JSon($user); }); $server->addMap("PUT", "/users/:login", function ($server) { $db = $server->getParameter("db");
public function auth(Rest\Server $rest) { $rest->getResponse()->setResponse($rest->getAuthenticator()->getUser()); }