示例#1
0
 /**
  * Creates a log entry from the given request
  *
  * @param Slim\Http\Request $request The request
  *
  * @return \API\Document\Log The log document
  */
 public function logRequest($request)
 {
     $collection = $this->getDocumentManager()->getCollection('logs');
     $document = $collection->createDocument();
     $document->setIp($request->getIp());
     $document->setMethod($request->getMethod());
     $document->setEndpoint($request->getPathInfo());
     $currentDate = new \DateTime();
     $document->setTimestamp(Util\Date::dateTimeToMongoDate($currentDate));
     $document->save();
     return $document;
 }
示例#2
0
 public function testSlimRequest()
 {
     $env = \Slim\Environment::mock(array('REQUEST_METHOD' => 'GET', 'X_REQUESTED_WITH' => 'foo', 'slim.input' => 'This is the body.', 'PATH_INFO' => '/bar/xyz'));
     $req = new \Slim\Http\Request($env);
     $this->assertEquals('GET', $req->getMethod());
     $slimRequest = new SlimRequest($req);
     $this->assertEquals('GET', $slimRequest->getMethod());
     $this->assertEquals('/bar/xyz', $slimRequest->getResource());
     $this->assertEquals('This is the body.', $slimRequest->getBody());
     $this->assertTrue($slimRequest->hasHeader('X_REQUESTED_WITH'));
     $this->assertEquals('foo', $slimRequest->getHeader('X_REQUESTED_WITH'));
 }
示例#3
0
 /**
  * Call
  *
  * Implements Slim middleware interface. This method is invoked and passed
  * an array of environment variables. This middleware inspects the environment
  * variables for the HTTP method override parameter; if found, this middleware
  * modifies the environment settings so downstream middleware and/or the Slim
  * application will treat the request with the desired HTTP method.
  *
  * @return array[status, header, body]
  */
 public function call()
 {
     $env = $this->app->environment();
     if (isset($env['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
         // Header commonly used by Backbone.js and others
         $env['slim.method_override.original_method'] = $env['REQUEST_METHOD'];
         $env['REQUEST_METHOD'] = strtoupper($env['HTTP_X_HTTP_METHOD_OVERRIDE']);
     } elseif (isset($env['REQUEST_METHOD']) && $env['REQUEST_METHOD'] === 'POST') {
         // HTML Form Override
         $req = new \Slim\Http\Request($env);
         $method = $req->post($this->settings['key']);
         if ($method) {
             $env['slim.method_override.original_method'] = $env['REQUEST_METHOD'];
             $env['REQUEST_METHOD'] = strtoupper($method);
         }
     }
     $this->next->call();
 }
示例#4
0
 /**
  * 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);
         }
     }
 }
示例#5
0
 /**
  * Test get user agent string when not set
  */
 public function testGetUserAgentWhenNotExists()
 {
     $env = \Slim\Environment::mock();
     unset($env['HTTP_USER_AGENT']);
     $req = new \Slim\Http\Request($env);
     $this->assertNull($req->getUserAgent());
 }
示例#6
0
 public function testDispatchWithoutCallable()
 {
     \Slim\Environment::mock(array('REQUEST_METHOD' => 'GET', 'REMOTE_ADDR' => '127.0.0.1', 'SCRIPT_NAME' => '', 'PATH_INFO' => '/hello/josh', 'QUERY_STRING' => 'one=1&two=2&three=3', 'SERVER_NAME' => 'slim', 'SERVER_PORT' => 80, 'slim.url_scheme' => 'http', 'slim.input' => '', 'slim.errors' => fopen('php://stderr', 'w'), 'HTTP_HOST' => 'slim'));
     $env = \Slim\Environment::getInstance();
     $req = new \Slim\Http\Request($env);
     $router = new \Slim\Router();
     $router->setResourceUri($req->getResourceUri());
     $route = new \Slim\Route('/hello/:name', 'foo');
     $route->matches($req->getResourceUri());
     //<-- Extracts params from resource URI
     $this->assertFalse($router->dispatch($route));
 }
示例#7
0
 /**
  * Reconstructs a full URL for the request from Slim's request object.
  *
  * @param   Slim\Environment   $env  The application environment.
  * @param   Slim\Http\Request  $request
  * @return  string  The request URL.
  */
 private function request_url($env, $request)
 {
     $url = implode('', array($request->getUrl(), $request->getRootUri(), $request->getPathInfo()));
     if (isset($env['QUERY_STRING']) and !empty($env['QUERY_STRING'])) {
         $url .= '?' . $env['QUERY_STRING'];
     }
     return $url;
 }
示例#8
0
 public function testRouteMiddlwareArguments()
 {
     $this->expectOutputString('foobar');
     \Slim\Environment::mock(array('SCRIPT_NAME' => '', 'PATH_INFO' => '/foo'));
     $env = \Slim\Environment::getInstance();
     $req = new \Slim\Http\Request($env);
     $router = new \Slim\Router();
     $route = new \Slim\Route('/foo', function () {
         echo "bar";
     });
     $route->setName('foo');
     $route->setMiddleware(function ($route) {
         echo $route->getName();
     });
     $route->matches($req->getResourceUri());
     //<-- Extracts params from resource URI
     $router->dispatch($route);
 }
示例#9
0
 function path()
 {
     return $this->slimRequest->getPath();
 }