예제 #1
0
    public function testSerialize()
    {
        $parameter = new Parameter('query', 'count', 'Count parameter');
        $responseMessage = new ResponseMessage(200, 'Return', 'News');
        $operation = new Operation('PUT', 'updatePet', 'Update an existing pet');
        $operation->setNotes('foobar');
        $operation->addParameter($parameter);
        $operation->addResponseMessage($responseMessage);
        $content = <<<JSON
{
  "method": "PUT",
  "nickname": "updatePet",
  "summary": "Update an existing pet",
  "notes": "foobar",
  "parameters": [{
    "paramType": "query",
    "name": "count",
    "description": "Count parameter"
  }],
  "responseMessages": [{
    "code": 200,
    "message": "Return",
    "responseModel": "News"
  }]
}
JSON;
        $this->assertRecordEqualsContent($operation, $content);
        $this->assertEquals('PUT', $operation->getMethod());
        $this->assertEquals('updatePet', $operation->getNickname());
        $this->assertEquals('Update an existing pet', $operation->getSummary());
        $this->assertEquals('foobar', $operation->getNotes());
        $this->assertEquals([$parameter], $operation->getParameters());
        $this->assertEquals([$responseMessage], $operation->getResponseMessages());
    }
예제 #2
0
파일: Swagger.php 프로젝트: seytar/psx
 protected function getApis(Resource $resource)
 {
     $api = new Api(ApiGeneration::transformRoutePlaceholder($resource->getPath()));
     $description = $resource->getDescription();
     $methods = $resource->getMethods();
     if (!empty($description)) {
         $api->setDescription($description);
     }
     foreach ($methods as $method) {
         // get operation name
         $request = $method->getRequest();
         $response = $this->getSuccessfulResponse($method);
         $description = $method->getDescription();
         $entityName = '';
         if ($request instanceof SchemaInterface) {
             $entityName = $request->getDefinition()->getName();
         } elseif ($response instanceof SchemaInterface) {
             $entityName = $response->getDefinition()->getName();
         }
         // create new operation
         $operation = new Operation($method->getName(), strtolower($method->getName()) . ucfirst($entityName));
         if (!empty($description)) {
             $operation->setSummary($description);
         }
         // path parameter
         $parameters = $resource->getPathParameters()->getDefinition();
         foreach ($parameters as $parameter) {
             $param = new Parameter('path', $parameter->getName(), $parameter->getDescription(), $parameter->isRequired());
             $this->setParameterType($parameter, $param);
             $operation->addParameter($param);
         }
         // query parameter
         $parameters = $method->getQueryParameters()->getDefinition();
         foreach ($parameters as $parameter) {
             $param = new Parameter('query', $parameter->getName(), $parameter->getDescription(), $parameter->isRequired());
             $this->setParameterType($parameter, $param);
             $operation->addParameter($param);
         }
         // request body
         if ($request instanceof SchemaInterface) {
             $description = $request->getDefinition()->getDescription();
             $type = strtolower($method->getName()) . 'Request';
             $parameter = new Parameter('body', 'body', $description, true);
             $parameter->setType($type);
             $operation->addParameter($parameter);
         }
         // response body
         $responses = $method->getResponses();
         foreach ($responses as $statusCode => $response) {
             $type = strtolower($method->getName()) . 'Response';
             $message = $response->getDefinition()->getDescription() ?: 'Response';
             $operation->addResponseMessage(new ResponseMessage($statusCode, $message, $type));
         }
         $api->addOperation($operation);
     }
     return array($api);
 }