diff --git a/composer.json b/composer.json index fae87b9..5a20029 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ ], "require": { "php": ">=5.3.3", - "zircote/swagger-php": "~0.9.0" + "zircote/swagger-php": "~2.0" }, "autoload": { "psr-0": { diff --git a/src/SwaggerModule/Controller/DocumentationController.php b/src/SwaggerModule/Controller/DocumentationController.php index 778adfd..a68dad2 100644 --- a/src/SwaggerModule/Controller/DocumentationController.php +++ b/src/SwaggerModule/Controller/DocumentationController.php @@ -35,10 +35,10 @@ class DocumentationController extends AbstractActionController */ public function displayAction() { - /** @var $swagger \Swagger\Swagger */ - $swagger = $this->serviceLocator->get('Swagger\Swagger'); - $jsonModel = new JsonModel(); - return $jsonModel->setVariables($swagger->getResourceList()); + /** @var $swagger \Swagger\Annotations\Swagger */ + $swagger = $this->serviceLocator->get('Swagger\Annotations\Swagger'); + $jsonModel = new JsonModel((array)$swagger->jsonSerialize()); + return $jsonModel; } /** @@ -49,7 +49,7 @@ public function displayAction() public function detailsAction() { /** @var $swagger \Swagger\Swagger */ - $swagger = $this->serviceLocator->get('Swagger\Swagger'); + $swagger = $this->serviceLocator->get('Swagger\Annotations\Swagger'); /** @var $options \SwaggerModule\Options\ModuleOptions */ $options = $this->serviceLocator->get('SwaggerModule\Options\ModuleOptions'); diff --git a/src/SwaggerModule/Module.php b/src/SwaggerModule/Module.php index 6eaac96..5170d65 100644 --- a/src/SwaggerModule/Module.php +++ b/src/SwaggerModule/Module.php @@ -21,8 +21,10 @@ namespace SwaggerModule; use RuntimeException; -use Swagger\Swagger as SwaggerLibrary; use SwaggerModule\Options\ModuleOptions as SwaggerModuleOptions; +use Swagger\StaticAnalyser as SwaggerStaticAnalyser; +use Swagger\Analysis as SwaggerAnalysis; +use Swagger\Util as SwaggerUtil; use Zend\Console\Adapter\AdapterInterface; use Zend\ModuleManager\Feature\ConfigProviderInterface; use Zend\ModuleManager\Feature\ServiceProviderInterface; @@ -47,7 +49,7 @@ public function getServiceConfig() { return array( 'aliases' => array( - 'service.swagger' => 'Swagger\Swagger', + 'service.swagger' => 'Swagger\Annotations\Swagger', ), 'factories' => array( @@ -62,10 +64,26 @@ public function getServiceConfig() return new SwaggerModuleOptions($config); }, - 'Swagger\Swagger' => function($serviceManager) { + 'Swagger\Annotations\Swagger' => function($serviceManager) { /** @var $options \SwaggerModule\Options\ModuleOptions */ $options = $serviceManager->get('SwaggerModule\Options\ModuleOptions'); - return new SwaggerLibrary($options->getPaths()); + $analyser = new SwaggerStaticAnalyser(); + $analysis = new SwaggerAnalysis(); + $processors = SwaggerAnalysis::processors(); + + // Crawl directory and parse all files + $paths = $options->getPaths(); + foreach($paths as $directory) { + $finder = SwaggerUtil::finder($directory); + foreach ($finder as $file) { + $analysis->addAnalysis($analyser->fromFile($file->getPathname())); + } + } + // Post processing + $analysis->process($processors); + // Validation (Generate notices & warnings) + $analysis->validate(); + return $analysis->swagger; }, ) );