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