Skip to content

Commit c38692d

Browse files
committed
Added useMiddlewares option - Fixes mpociot#112
1 parent 9820510 commit c38692d

File tree

5 files changed

+40
-4
lines changed

5 files changed

+40
-4
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Option | Description
4646
`middleware` | The middlewares to use for generation
4747
`noResponseCalls` | Disable API response calls
4848
`noPostmanCollection` | Disable Postman collection creation
49+
`useMiddlewares` | Use all configured route middlewares (Needed for Laravel 5.3 `SubstituteBindings` middleware)
4950
`actAsUserId` | The user ID to use for authenticated API response calls
5051
`router` | The router to use, when processing the route files (can be Laravel or Dingo - defaults to Laravel)
5152
`bindings` | List of route bindings that should be replaced when trying to retrieve route results. Syntax format: `binding_one,id|binding_two,id`

src/Mpociot/ApiDoc/Commands/GenerateDocumentation.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class GenerateDocumentation extends Command
2727
{--middleware= : The middleware to use for generation}
2828
{--noResponseCalls : Disable API response calls}
2929
{--noPostmanCollection : Disable Postman collection creation}
30+
{--useMiddlewares : Use all configured route middlewares}
3031
{--actAsUserId= : The user ID to use for API response calls}
3132
{--router=laravel : The router to be used (Laravel or Dingo)}
3233
{--force : Force rewriting of existing routes}
@@ -76,6 +77,8 @@ public function handle()
7677
return false;
7778
}
7879

80+
$generator->prepareMiddleware($this->option('useMiddlewares'));
81+
7982
if ($this->option('router') === 'laravel') {
8083
$parsedRoutes = $this->processLaravelRoutes($generator, $allowedRoutes, $routePrefix, $middleware);
8184
} else {

src/Mpociot/ApiDoc/Generators/AbstractGenerator.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ abstract protected function getUri($route);
2929
*/
3030
abstract public function processRoute($route, $bindings = [], $withResponse = true);
3131

32+
/**
33+
* Prepares / Disables route middlewares
34+
*
35+
* @param boolean $disable
36+
*
37+
* @return void
38+
*/
39+
abstract public function prepareMiddleware($disable = false);
40+
3241
/**
3342
* @param array $routeData
3443
* @param array $routeAction
@@ -78,7 +87,7 @@ protected function getRouteResponse($route, $bindings, $headers = [])
7887

7988
//Changes url with parameters like /users/{user} to /users/1
8089
$uri = preg_replace('/{(.*)}/', 1, $uri);
81-
90+
8291
return $this->callRoute(array_shift($methods), $uri, [], [], [], $headers);
8392
}
8493

src/Mpociot/ApiDoc/Generators/DingoGenerator.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,19 @@ public function processRoute($route, $bindings = [], $headers = [], $withRespons
4141
], $routeAction, $bindings);
4242
}
4343

44+
/**
45+
* Prepares / Disables route middlewares
46+
*
47+
* @param boolean $disable
48+
*
49+
* @return void
50+
*/
51+
public function prepareMiddleware($disable = true)
52+
{
53+
// Not needed by Dingo
54+
return false;
55+
}
56+
4457
/**
4558
* {@inheritdoc}
4659
*/

src/Mpociot/ApiDoc/Generators/LaravelGenerator.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ public function processRoute($route, $bindings = [], $headers = [], $withRespons
5656
], $routeAction, $bindings);
5757
}
5858

59+
/**
60+
* Prepares / Disables route middlewares
61+
*
62+
* @param boolean $disable
63+
*
64+
* @return void
65+
*/
66+
public function prepareMiddleware($disable = true)
67+
{
68+
App::instance('middleware.disable', true);
69+
}
70+
5971
/**
6072
* Call the given URI and return the Response.
6173
*
@@ -71,9 +83,6 @@ public function processRoute($route, $bindings = [], $headers = [], $withRespons
7183
*/
7284
public function callRoute($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
7385
{
74-
$kernel = App::make('Illuminate\Contracts\Http\Kernel');
75-
App::instance('middleware.disable', true);
76-
7786
$server = collect([
7887
'CONTENT_TYPE' => 'application/json',
7988
'Accept' => 'application/json',
@@ -84,6 +93,7 @@ public function callRoute($method, $uri, $parameters = [], $cookies = [], $files
8493
$cookies, $files, $this->transformHeadersToServerVars($server), $content
8594
);
8695

96+
$kernel = App::make('Illuminate\Contracts\Http\Kernel');
8797
$response = $kernel->handle($request);
8898

8999
$kernel->terminate($request, $response);

0 commit comments

Comments
 (0)