LaravelGenerator.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Mpociot\ApiDoc\Generators;
  3. use Illuminate\Routing\Route;
  4. use Illuminate\Support\Facades\App;
  5. use Illuminate\Support\Facades\Request;
  6. class LaravelGenerator extends AbstractGenerator
  7. {
  8. /**
  9. * @param Route $route
  10. *
  11. * @return mixed
  12. */
  13. public function getUri(Route $route)
  14. {
  15. if (version_compare(app()->version(), '5.4', '<')) {
  16. return $route->getUri();
  17. }
  18. return $route->uri();
  19. }
  20. /**
  21. * @param Route $route
  22. *
  23. * @return mixed
  24. */
  25. public function getMethods(Route $route)
  26. {
  27. if (version_compare(app()->version(), '5.4', '<')) {
  28. $methods = $route->getMethods();
  29. } else {
  30. $methods = $route->methods();
  31. }
  32. return array_diff($methods, ['HEAD']);
  33. }
  34. /**
  35. * Prepares / Disables route middlewares.
  36. *
  37. * @param bool $disable
  38. *
  39. * @return void
  40. */
  41. public function prepareMiddleware($enable = true)
  42. {
  43. App::instance('middleware.disable', ! $enable);
  44. }
  45. /**
  46. * Call the given URI and return the Response.
  47. *
  48. * @param string $method
  49. * @param string $uri
  50. * @param array $parameters
  51. * @param array $cookies
  52. * @param array $files
  53. * @param array $server
  54. * @param string $content
  55. *
  56. * @return \Illuminate\Http\Response
  57. */
  58. public function callRoute($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
  59. {
  60. $server = collect([
  61. 'CONTENT_TYPE' => 'application/json',
  62. 'Accept' => 'application/json',
  63. ])->merge($server)->toArray();
  64. $request = Request::create(
  65. $uri, $method, $parameters,
  66. $cookies, $files, $this->transformHeadersToServerVars($server), $content
  67. );
  68. $kernel = App::make('Illuminate\Contracts\Http\Kernel');
  69. $response = $kernel->handle($request);
  70. $kernel->terminate($request, $response);
  71. return $response;
  72. }
  73. }