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); }
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); } }
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); }