Exemplo n.º 1
0
 /**
  * This function outputs the given $data as valid HAL+JSON to the client
  * and sets the HTTP Response Code to the given $statusCode.
  *
  * @param array|SlimBootstrap\DataObject $data       The data to output to
  *                                                   the client
  * @param int                            $statusCode The status code to set
  *                                                   in the reponse
  */
 public function write($data, $statusCode = 200)
 {
     $path = $this->_request->getPath();
     $hal = new hal\Hal($path);
     if (true === is_array($data)) {
         $pathData = explode('/', $path);
         unset($pathData[0]);
         $endpointName = end($pathData);
         $endpointUri = '/' . implode('/', $pathData) . '/';
         foreach ($data as $entry) {
             /** @var SlimBootstrap\DataObject $entry */
             $identifiers = $entry->getIdentifiers();
             $resourceName = $endpointUri . implode('/', array_values($identifiers));
             $resource = new hal\Hal($resourceName, $entry->getData() + $entry->getIdentifiers());
             $this->_addAdditionalLinks($resource, $entry->getLinks());
             $hal->addLink($endpointName, $resourceName);
             $hal->addResource($endpointName, $resource);
         }
     } else {
         $hal->setData($data->getData() + $data->getIdentifiers());
         $this->_addAdditionalLinks($hal, $data->getLinks());
     }
     $body = $this->_jsonEncode($hal);
     if (false === $body) {
         $this->_response->setStatus(500);
         $this->_response->setBody("Error encoding requested data.");
         return;
     }
     $this->_headers->set('Content-Type', 'application/hal+json; charset=UTF-8');
     $this->_response->setStatus($statusCode);
     $this->_response->setBody($hal->asJson());
 }
 public function setResult(RestApi_Result $result)
 {
     foreach ($result->getHeaders() as $name => $value) {
         $this->response->headers()->set($name, $value);
     }
     $this->response->setStatus($result->getCode());
     $this->response->setBody($result->getBody());
 }
Exemplo n.º 3
0
 public function __invoke()
 {
     $root = __DIR__ . '/..';
     if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         $soldierIdentity = new SoldierIdentity($_POST['firstName'], $_POST['lastName'], $_POST['nickName'], (int) $_POST['nationality']);
         $soldierServiceRecord = new SoldierServiceRecord((int) $_POST['status'], (int) $_POST['rank'], (int) $_POST['specialization'], (int) $_POST['numMissions'], (int) $_POST['numKills'], (int) $_POST['hp'], (int) $_POST['will'], (int) $_POST['defence'], (int) $_POST['aim']);
         $soldier = new Soldier($soldierIdentity, $soldierServiceRecord);
         $persister = new SoldierPersister((new Sqlite3Factory($root . '/db/data.sqlite3'))->db());
         $persister->saveNew($soldier);
         header('303 See Other');
         header('Location: /');
     } else {
         $this->response->setBody((new TemplateFactory([$root . '/tpl']))->loadTemplate('create.twig')->render([]));
     }
 }
Exemplo n.º 4
0
 public function __invoke()
 {
     $root = __DIR__ . '/..';
     $db = new Sqlite3($root . '/db/data.sqlite3', SQLITE3_OPEN_READWRITE);
     $openErr = $db->lastErrorCode();
     if ($openErr) {
         throw new Exception($db->lastErrorMsg());
     }
     $db->enableExceptions(true);
     $stmt = $db->prepare(self::QUERY_SOLDIERS_LIST);
     $result = $stmt->execute();
     /**
      * @var $soldierList Soldier[]
      */
     $soldierList = [];
     while ($record = $result->fetchArray(SQLITE3_ASSOC)) {
         $soldierIdentity = new SoldierIdentity($record['firstName'], $record['lastName'], $record['nickName'], $record['nationality']);
         $soliderServiceRecord = new SoldierServiceRecord($record['status'], $record['rank'], $record['specialization'], $record['numMissions'], $record['numKills'], $record['hp'], $record['will'], $record['defence'], $record['aim']);
         $soldierList[] = new Soldier($soldierIdentity, $soliderServiceRecord);
     }
     $this->response->setBody((new TemplateFactory([$root . '/tpl']))->loadTemplate('home.twig')->render(['soldierList' => $soldierList]));
 }
Exemplo n.º 5
0
 /**
  * This function outputs the given $data as valid JSON to the client
  * and sets the HTTP Response Code to the given $statusCode.
  *
  * @param array|SlimBootstrap\DataObject $data       The data to output to
  *                                                   the client
  * @param int                            $statusCode The status code to set
  *                                                   in the response
  */
 public function write($data, $statusCode = 200)
 {
     $result = array();
     if (true === is_array($data)) {
         foreach ($data as $entry) {
             /** @var SlimBootstrap\DataObject $entry */
             $identifiers = array_values($entry->getIdentifiers());
             $this->_buildStructure($entry, $identifiers, 0, $result);
         }
     } else {
         $identifiers = array_values($data->getIdentifiers());
         $this->_buildStructure($data, $identifiers, 0, $result);
     }
     $body = $this->_jsonEncode($result);
     if (false === $body) {
         $this->_response->setStatus(500);
         $this->_response->setBody("Error encoding requested data.");
         return;
     }
     $this->_headers->set('Content-Type', 'application/json; charset=UTF-8');
     $this->_response->setStatus($statusCode);
     $this->_response->setBody($body);
 }
Exemplo n.º 6
0
 /**
  * This function outputs the given $data as valid CSV to the client
  * and sets the HTTP Response Code to the given $statusCode.
  *
  * @param SlimBootstrap\DataObject[] $data The data to output to
  *                                                   the client
  * @param int $statusCode The status code to set
  *                                                   in the response
  * @throws CSVEncodingException
  */
 public function write($data, $statusCode = 200)
 {
     if ($data instanceof DataObject) {
         $data = array($data);
     } else {
         if (false === \is_array($data)) {
             throw new CSVEncodingException('Expected array of DataObjects or one DataObject, but ' . \gettype($data) . ' given.');
         }
     }
     $body = $this->_csvEncode($data, $this->_encloseAll);
     $this->_headers->set('Content-Type', 'text/csv; charset=UTF-8');
     $this->_response->setStatus($statusCode);
     $this->_response->setBody($body);
 }