Example #1
0
 public function doParse($data)
 {
     $data = json_decode($data, true);
     if (!is_array($data)) {
         throw new InvalidArgumentException('Invalid Swagger schema');
     }
     $this->version = $this->parseVersion($data);
     if (isset($data['basePath'])) {
         if (isset($data['resourcePath'])) {
             // 1.2
             $basePath = $data['resourcePath'];
         } else {
             // in 1.2 base path is an url in 2.0 it is a path
             $baseUri = new Uri($data['basePath']);
             $basePath = $baseUri->getPath();
         }
     } else {
         $basePath = '/';
     }
     if (isset($data['definitions']) && is_array($data['definitions'])) {
         // 2.0
         $this->parseDefinitions($data['definitions']);
         $this->resolveDefinitions();
     } elseif (isset($data['models']) && is_array($data['models'])) {
         // 1.2
         $this->parseDefinitions($data['models']);
         $this->resolveDefinitions();
     }
     $this->parsePaths($basePath, $data);
 }
Example #2
0
 public function resolve(Uri $uri, Document $source, RefResolver $resolver)
 {
     $name = ltrim($uri->getPath(), '/');
     $row = $this->connection->fetchAssoc('SELECT name, source FROM fusio_schema WHERE name LIKE :name', array('name' => $name));
     if (!empty($row)) {
         $data = Json\Parser::decode($row['source'], true);
         if (is_array($data)) {
             $document = new Document($data, $resolver, null, $uri);
             return $document;
         } else {
             throw new RuntimeException(sprintf('Schema %s must be an object', $row['name']));
         }
     } else {
         throw new RuntimeException('Invalid schema reference ' . $name);
     }
 }
Example #3
0
 public function doParse($data)
 {
     $data = $this->parser->parse($data);
     if (!is_array($data)) {
         throw new InvalidArgumentException('Invalid RAML schema');
     }
     $this->version = $this->parseVersion($data);
     if (isset($data['baseUri'])) {
         $baseUri = new Uri($data['baseUri']);
         $basePath = $baseUri->getPath();
     } else {
         $basePath = '/';
     }
     if (isset($data['schemas']) && is_array($data['schemas'])) {
         // 0.8
         $this->schemas = $this->parseSchemas($data['schemas']);
     } elseif (isset($data['types']) && is_array($data['types'])) {
         // 1.0
         $this->schemas = $this->parseSchemas($data['types']);
     }
     $this->parsePaths($basePath, $data);
 }