function json(Slim\Http\Response $res, $json = array(), $status = null) { $res->headers->set('Content-Type', 'application/json'); $res->write(json_encode($json)); if ($status) { $res->setStatus($status); } return; }
public function testIsServerError() { $r1 = new \Slim\Http\Response(); $r2 = new \Slim\Http\Response(); $r1->setStatus(500); $r2->setStatus(400); $this->assertTrue($r1->isServerError()); $this->assertFalse($r2->isServerError()); }
/** * Constructor * @param array $userSettings Associative array of application settings * @api */ public function __construct(array $userSettings = array()) { parent::__construct(); // Settings $this['settings'] = function ($c) use($userSettings) { $config = new \Slim\Configuration(new \Slim\ConfigurationHandler()); $config->setArray($userSettings); return $config; }; // Environment $this['environment'] = function ($c) { return new \Slim\Environment($_SERVER); }; // Request $this['request'] = function ($c) { $environment = $c['environment']; $headers = new \Slim\Http\Headers($environment); $cookies = new \Slim\Http\Cookies($headers); if ($c['settings']['cookies.encrypt'] === true) { $cookies->decrypt($c['crypt']); } return new \Slim\Http\Request($environment, $headers, $cookies); }; // Response $this['response'] = function ($c) { $headers = new \Slim\Http\Headers(); $cookies = new \Slim\Http\Cookies(); $response = new \Slim\Http\Response($headers, $cookies); $response->setProtocolVersion('HTTP/' . $c['settings']['http.version']); return $response; }; // Router $this['router'] = function ($c) { return new \Slim\Router(); }; // View $this['view'] = function ($c) { $view = $c['settings']['view']; if ($view instanceof \Slim\Interfaces\ViewInterface === false) { throw new \Exception('View class must be instance of \\Slim\\View'); } return $view; }; // Crypt $this['crypt'] = function ($c) { return new \Slim\Crypt($c['settings']['crypt.key'], $c['settings']['crypt.cipher'], $c['settings']['crypt.mode']); }; // Session $this['session'] = function ($c) { $session = new \Slim\Session($c['settings']['session.handler']); $session->start(); if ($c['settings']['session.encrypt'] === true) { $session->decrypt($c['crypt']); } return $session; }; // Flash $this['flash'] = function ($c) { $flash = new \Slim\Flash($c['session'], $c['settings']['session.flash_key']); if ($c['settings']['view'] instanceof \Slim\Interfaces\ViewInterface) { $c['view']->set('flash', $flash); } return $flash; }; // Mode $this['mode'] = function ($c) { $mode = $c['settings']['mode']; if (isset($_ENV['SLIM_MODE'])) { $mode = $_ENV['SLIM_MODE']; } else { $envMode = getenv('SLIM_MODE'); if ($envMode !== false) { $mode = $envMode; } } return $mode; }; // Middleware stack $this['middleware'] = array($this); }
/** * Deleta o usuario * $request e $response usam interface psr7 * $args contém os argumentos informados na rota * * @param Slim\Http\Request $request * @param Slim\Http\Response $response * @param array $args * @return void|Slim\Http\Response */ public function delete($request, $response, $args) { $id = $args['id']; $validations = [v::intVal()->validate($id)]; if ($this->validate($validations) === false) { return $response->withStatus(400); } else { $usuario = Models\Usuario::with('relationDependentes')->find($id); if ($usuario) { $dependentes = $usuario->relationDependentes->all(); if ($dependentes) { $status = 403; echo $this->error('delete#usuarios{id}', $request->getUri()->getPath(), $status, 'FK_CONSTRAINT_ABORT'); return $response->withStatus($status); } else { $usuario->delete(); } } else { $status = 404; echo $this->error('delete#usuarios{id}', $request->getUri()->getPath(), $status); return $response->withStatus($status); } } }
<?php use Interop\Container\ContainerInterface; return [PDO::class => function (ContainerInterface $container) { $settings = $container->get('settings')['db']; $pdo = new \PDO("mysql:host={$settings['host']};dbname={$settings['dbname']};charset=utf8", $settings['user'], $settings['password']); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); return $pdo; }, 'Renderer' => function (ContainerInterface $container) { /* @var $themeEntity WP_Theme */ $themeEntity = $container->get(\Sarcofag\API\WP::class)->wp_get_theme(); $themeDirectory = $themeEntity->get_template_directory() . '/src/api/view'; $paths = array_map('realpath', array_merge($container->get('template.paths'), [$themeEntity->get_template() => $themeDirectory])); $renderer = new \Sarcofag\View\Renderer\SimpleRenderer($container->get('HelperManager'), $paths, $container, $container->get('Sarcofag\\API\\WP')); return $renderer; }, 'errorHandler' => WP_DEBUG ? function (ContainerInterface $container) { return new \Slim\Handlers\Error($container->get('settings')['displayErrorDetails']); } : DI\get('ErrorController'), 'notFoundHandler' => DI\get('NotFoundController'), 'notAllowedHandler' => DI\get('NotAllowedController'), 'environment' => function () { return new \Slim\Http\Environment($_SERVER); }, 'request' => function (ContainerInterface $container) { return \Slim\Http\Request::createFromEnvironment($container->get('environment')); }, 'response' => function (ContainerInterface $container) { $headers = new \Slim\Http\Headers(['Content-Type' => 'text/html; charset=UTF-8']); $response = new \Slim\Http\Response(200, $headers); return $response->withProtocolVersion($container->get('settings')['httpVersion']); }, 'callableResolver' => function (ContainerInterface $container) { return new \Slim\CallableResolver($container); }];