Пример #1
0
 /**
  * emulate swagger. save analyzed data to object
  *
  * @param string $basePath
  */
 public static function analyze($basePath)
 {
     if (isset(self::$analyzedData)) {
         return;
     }
     if (isset($_ENV['swagger-assert-cache']) && $_ENV['swagger-assert-cache'] && file_exists(self::CACHE_FILE)) {
         self::$analyzedData = json_decode(file_get_contents(self::CACHE_FILE), true);
         return;
     }
     $swagger = new Swagger([$basePath], []);
     $resourceOptions = ['output' => 'json', 'defaultBasePath' => 'dummy string', 'defaultApiVersion' => null, 'defaultSwaggerVersion' => '1.2'];
     $analyzedData = [];
     foreach ($swagger->getResourceNames() as $resourceName) {
         $annotatedData = json_decode($swagger->getResource($resourceName, $resourceOptions), true);
         $resourceName = str_replace('/', '-', ltrim($resourceName, '/'));
         $analyzedData[$resourceName] = $annotatedData;
     }
     if (isset($_ENV['swagger-assert-cache']) && $_ENV['swagger-assert-cache']) {
         file_put_contents(self::CACHE_FILE, json_encode($analyzedData));
     }
     self::$analyzedData = $analyzedData;
 }
Пример #2
0
 /** 
  * Show an specific Resource
  */
 public function showResource($name)
 {
     $options = Config::get('laravel-swagger::getResourceOptions');
     $resourceName = "/" . str_replace("-", "/", $name);
     $excludedPath = Config::get('laravel-swagger::excludedPath');
     $swagger = new Swagger($this->getPaths(), $excludedPath);
     if (Config::get('laravel-swagger::cache') && Cache::has('resource_' . $resourceName)) {
         $resource = Cache::get('resource_' . $resourceName);
     } else {
         if (!in_array($resourceName, $swagger->getResourceNames())) {
             App::abort(404, 'Resource not found');
         }
         // Pet demo uses the main laravel-swagger route.
         if ($resourceName == '/petdemo') {
             $options['defaultBasePath'] = route('swagger-index');
         }
         $resource = $swagger->getResource($resourceName, $options);
     }
     if (Config::get('laravel-swagger::cache') && !Cache::has('resource_' . $resourceName)) {
         Cache::put('resource_' . $resourceName, $resource, $this->getExpireAt());
     }
     return $resource;
 }
Пример #3
0
     $docDir = Config::get('swagger.doc-dir');
     if (!File::exists($docDir) || is_writable($docDir)) {
         // delete all existing documentation
         if (File::exists($docDir)) {
             File::deleteDirectory($docDir);
         }
         File::makeDirectory($docDir);
         $defaultBasePath = Config::get('swagger.default-base-path');
         $defaultApiVersion = Config::get('swagger.default-api-version');
         $defaultSwaggerVersion = Config::get('swagger.default-swagger-version');
         $excludeDirs = Config::get('swagger.excludes');
         $swagger = new Swagger($appDir, $excludeDirs);
         $resourceList = $swagger->getResourceList(array('output' => 'array', 'apiVersion' => $defaultApiVersion, 'swaggerVersion' => $defaultSwaggerVersion));
         $resourceOptions = array('output' => 'json', 'defaultSwaggerVersion' => $resourceList['swaggerVersion'], 'defaultBasePath' => $defaultBasePath);
         $output = array();
         foreach ($swagger->getResourceNames() as $resourceName) {
             $json = $swagger->getResource($resourceName, $resourceOptions);
             $resourceName = str_replace(DIRECTORY_SEPARATOR, '-', ltrim($resourceName, DIRECTORY_SEPARATOR));
             $output[$resourceName] = $json;
         }
         $filename = $docDir . '/api-docs.json';
         file_put_contents($filename, Swagger::jsonEncode($resourceList, true));
         foreach ($output as $name => $json) {
             $name = str_replace(DIRECTORY_SEPARATOR, '-', ltrim($name, DIRECTORY_SEPARATOR));
             $filename = $docDir . '/' . $name . '.json';
             file_put_contents($filename, $json);
         }
     }
 }
 if (Config::get('swagger.behind-reverse-proxy')) {
     $proxy = Request::server('REMOTE_ADDR');