Exemplo n.º 1
0
 public function testResource()
 {
     $resource = new Resource(Resource::STATUS_ACTIVE, '/foo');
     $resource->setTitle('foobar');
     $resource->setDescription('foobar');
     $resource->addPathParameter(Property::getString('foo'));
     $resource->addMethod(Factory::getMethod('GET'));
     $this->assertEquals(Resource::STATUS_ACTIVE, $resource->getStatus());
     $this->assertTrue($resource->isActive());
     $this->assertFalse($resource->isDeprecated());
     $this->assertFalse($resource->isClosed());
     $this->assertEquals('/foo', $resource->getPath());
     $this->assertEquals('foobar', $resource->getTitle());
     $this->assertEquals('foobar', $resource->getDescription());
     $this->assertInstanceOf('PSX\\Data\\SchemaInterface', $resource->getPathParameters());
     $this->assertInstanceOf('PSX\\Api\\Resource\\MethodAbstract', $resource->getMethod('GET'));
     $this->assertEquals(['GET' => $resource->getMethod('GET')], $resource->getMethods());
     $this->assertEquals(['GET'], $resource->getAllowedMethods());
     $this->assertTrue($resource->hasMethod('GET'));
     $this->assertFalse($resource->hasMethod('POST'));
 }
Exemplo n.º 2
0
 public function generate(Resource $resource)
 {
     $class = strtolower(str_replace('\\', '-', get_class($this)));
     $html = '<div class="psx-resource ' . $class . '" data-status="' . $resource->getStatus() . '" data-path="' . $resource->getPath() . '">';
     $html .= '<h4>' . $this->getName() . '</h4>';
     $description = $resource->getDescription();
     if (!empty($description)) {
         $html .= '<div class="psx-resource-description">' . $description . '</div>';
     }
     $methods = $resource->getMethods();
     foreach ($methods as $method) {
         $html .= '<div class="psx-resource-method" data-method="' . $method->getName() . '">';
         $description = $method->getDescription();
         if (!empty($description)) {
             $html .= '<div class="psx-resource-method-description">' . $description . '</div>';
         }
         // path parameters
         $pathParameters = $resource->getPathParameters();
         if ($pathParameters instanceof SchemaInterface) {
             $result = $this->generateHtml($pathParameters, self::TYPE_PATH, $method->getName(), $resource->getPath());
             if (!empty($result)) {
                 $html .= '<div class="psx-resource-data psx-resource-query">';
                 $html .= '<h5>' . $method->getName() . ' Path-Parameters</h5>';
                 $html .= '<div class="psx-resource-data-content">' . $result . '</div>';
                 $html .= '</div>';
             }
         }
         // query parameters
         $queryParameters = $method->getQueryParameters();
         if ($queryParameters instanceof SchemaInterface) {
             $result = $this->generateHtml($queryParameters, self::TYPE_QUERY, $method->getName(), $resource->getPath());
             if (!empty($result)) {
                 $html .= '<div class="psx-resource-data psx-resource-query">';
                 $html .= '<h5>' . $method->getName() . ' Query-Parameters</h5>';
                 $html .= '<div class="psx-resource-data-content">' . $result . '</div>';
                 $html .= '</div>';
             }
         }
         // request
         $request = $method->getRequest();
         if ($request instanceof SchemaInterface) {
             $result = $this->generateHtml($request, self::TYPE_REQUEST, $method->getName(), $resource->getPath());
             if (!empty($result)) {
                 $html .= '<div class="psx-resource-data psx-resource-request">';
                 $html .= '<h5>' . $method->getName() . ' Request</h5>';
                 $html .= '<div class="psx-resource-data-content">' . $result . '</div>';
                 $html .= '</div>';
             }
         }
         // responses
         $responses = $method->getResponses();
         foreach ($responses as $statusCode => $response) {
             $result = $this->generateHtml($response, self::TYPE_RESPONSE, $method->getName(), $resource->getPath(), $statusCode);
             if (!empty($result)) {
                 $message = isset(Http::$codes[$statusCode]) ? Http::$codes[$statusCode] : 'Unknown';
                 $html .= '<div class="psx-resource-data psx-resource-response">';
                 $html .= '<h5>' . $method->getName() . ' Response - ' . $statusCode . ' ' . $message . '</h5>';
                 $html .= '<div class="psx-resource-data-content">' . $result . '</div>';
                 $html .= '</div>';
             }
         }
         $html .= '</div>';
     }
     $html .= '</div>';
     return $html;
 }