예제 #1
0
 public function onGet()
 {
     parent::onGet();
     $version = $this->getUriFragment('version');
     $path = $this->getUriFragment('path');
     $doc = $this->resourceListing->getDocumentation($path);
     if ($doc instanceof DocumentationInterface) {
         if ($version == '*') {
             $version = $doc->getLatestVersion();
         }
         $resource = $doc->getResource($version);
         if (!$resource instanceof Resource) {
             throw new HttpException\NotFoundException('Given version is not available');
         }
         $path = ltrim($resource->getPath(), '/');
         $title = $resource->getTitle();
         if (empty($title)) {
             $title = ApiGeneration::generateTitleFromRoute($path);
         }
         $endpoint = $this->config['psx_url'] . '/' . $this->config['psx_dispatch'] . $path;
         $targetNamespace = $this->config['psx_soap_namespace'];
         $this->response->setHeader('Content-Type', 'text/xml');
         $generator = new Generator\Wsdl($title, $endpoint, $targetNamespace);
         $this->setBody($generator->generate($resource));
     } else {
         throw new HttpException\NotFoundException('Invalid resource');
     }
 }
예제 #2
0
 public function onGet()
 {
     parent::onGet();
     $version = $this->getUriFragment('version');
     $path = $this->getUriFragment('path');
     $doc = $this->resourceListing->getDocumentation($path);
     if ($doc instanceof DocumentationInterface) {
         if ($version == '*') {
             $version = $doc->getLatestVersion();
         }
         $resource = $doc->getResource($version);
         if (!$resource instanceof Resource) {
             throw new HttpException\NotFoundException('Given version is not available');
         }
         $path = ltrim($resource->getPath(), '/');
         $title = $resource->getTitle();
         if (empty($title)) {
             $title = str_replace(' ', '', ucwords(str_replace('/', ' ', $path)));
         }
         $baseUri = $this->config['psx_url'] . '/' . $this->config['psx_dispatch'];
         $targetNamespace = $this->config['psx_json_namespace'];
         $this->response->setHeader('Content-Type', 'application/raml+yaml');
         $generator = new Generator\Raml($title, $version, $baseUri, $targetNamespace);
         $this->setBody($generator->generate($resource));
     } else {
         throw new HttpException\NotFoundException('Invalid resource');
     }
 }
예제 #3
0
 public function onLoad()
 {
     parent::onLoad();
     $doc = $this->resourceListing->getDocumentation($this->context->get(Context::KEY_PATH));
     if (!$doc instanceof DocumentationInterface) {
         throw new RuntimeException('No documentation available');
     }
     $this->version = $this->getVersion($doc);
     $this->resource = $this->getResource($doc, $this->version);
     if (!$this->resource->hasMethod($this->getMethod())) {
         throw new StatusCode\MethodNotAllowedException('Method is not allowed', $this->resource->getAllowedMethods());
     }
     $this->pathParameters = $this->schemaAssimilator->assimilate($this->resource->getPathParameters(), $this->uriFragments);
     $this->queryParameters = $this->schemaAssimilator->assimilate($this->resource->getMethod($this->getMethod())->getQueryParameters(), $this->request->getUri()->getParameters());
 }
예제 #4
0
 protected function getRoutings()
 {
     $routings = array();
     $resources = $this->resourceListing->getResourceIndex();
     foreach ($resources as $resource) {
         $routings[] = new Record('routing', ['path' => $resource->getPath(), 'methods' => $resource->getAllowedMethods(), 'version' => '*']);
     }
     return $routings;
 }
예제 #5
0
 public function doDetail()
 {
     $version = $this->getUriFragment('version');
     $path = $this->getUriFragment('path');
     $doc = $this->resourceListing->getDocumentation($path);
     if ($doc instanceof DocumentationInterface) {
         if ($version == '*') {
             $version = $doc->getLatestVersion();
         }
         $resource = $doc->getResource($version);
         if (!$resource instanceof Resource) {
             throw new HttpException\NotFoundException('Given version is not available');
         }
         $baseUri = $this->config['psx_url'] . '/' . $this->config['psx_dispatch'];
         $targetNamespace = $this->config['psx_json_namespace'];
         $this->response->setHeader('Content-Type', 'application/json');
         $generator = new Generator\Swagger($version, $baseUri, $targetNamespace);
         $this->setBody($generator->generate($resource));
     } else {
         throw new HttpException\NotFoundException('Invalid resource');
     }
 }