Added useMiddlewares option - Fixes #112

This commit is contained in:
Marcel Pociot
2016-11-24 23:30:48 +01:00
parent 98205108db
commit c38692d740
5 changed files with 40 additions and 4 deletions

View File

@@ -46,6 +46,7 @@ Option | Description
`middleware` | The middlewares to use for generation
`noResponseCalls` | Disable API response calls
`noPostmanCollection` | Disable Postman collection creation
`useMiddlewares` | Use all configured route middlewares (Needed for Laravel 5.3 `SubstituteBindings` middleware)
`actAsUserId` | The user ID to use for authenticated API response calls
`router` | The router to use, when processing the route files (can be Laravel or Dingo - defaults to Laravel)
`bindings` | List of route bindings that should be replaced when trying to retrieve route results. Syntax format: `binding_one,id|binding_two,id`

View File

@@ -27,6 +27,7 @@ class GenerateDocumentation extends Command
{--middleware= : The middleware to use for generation}
{--noResponseCalls : Disable API response calls}
{--noPostmanCollection : Disable Postman collection creation}
{--useMiddlewares : Use all configured route middlewares}
{--actAsUserId= : The user ID to use for API response calls}
{--router=laravel : The router to be used (Laravel or Dingo)}
{--force : Force rewriting of existing routes}
@@ -76,6 +77,8 @@ class GenerateDocumentation extends Command
return false;
}
$generator->prepareMiddleware($this->option('useMiddlewares'));
if ($this->option('router') === 'laravel') {
$parsedRoutes = $this->processLaravelRoutes($generator, $allowedRoutes, $routePrefix, $middleware);
} else {

View File

@@ -29,6 +29,15 @@ abstract class AbstractGenerator
*/
abstract public function processRoute($route, $bindings = [], $withResponse = true);
/**
* Prepares / Disables route middlewares
*
* @param boolean $disable
*
* @return void
*/
abstract public function prepareMiddleware($disable = false);
/**
* @param array $routeData
* @param array $routeAction
@@ -78,7 +87,7 @@ abstract class AbstractGenerator
//Changes url with parameters like /users/{user} to /users/1
$uri = preg_replace('/{(.*)}/', 1, $uri);
return $this->callRoute(array_shift($methods), $uri, [], [], [], $headers);
}

View File

@@ -41,6 +41,19 @@ class DingoGenerator extends AbstractGenerator
], $routeAction, $bindings);
}
/**
* Prepares / Disables route middlewares
*
* @param boolean $disable
*
* @return void
*/
public function prepareMiddleware($disable = true)
{
// Not needed by Dingo
return false;
}
/**
* {@inheritdoc}
*/

View File

@@ -56,6 +56,18 @@ class LaravelGenerator extends AbstractGenerator
], $routeAction, $bindings);
}
/**
* Prepares / Disables route middlewares
*
* @param boolean $disable
*
* @return void
*/
public function prepareMiddleware($disable = true)
{
App::instance('middleware.disable', true);
}
/**
* Call the given URI and return the Response.
*
@@ -71,9 +83,6 @@ class LaravelGenerator extends AbstractGenerator
*/
public function callRoute($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
{
$kernel = App::make('Illuminate\Contracts\Http\Kernel');
App::instance('middleware.disable', true);
$server = collect([
'CONTENT_TYPE' => 'application/json',
'Accept' => 'application/json',
@@ -84,6 +93,7 @@ class LaravelGenerator extends AbstractGenerator
$cookies, $files, $this->transformHeadersToServerVars($server), $content
);
$kernel = App::make('Illuminate\Contracts\Http\Kernel');
$response = $kernel->handle($request);
$kernel->terminate($request, $response);