2012-04-11 20:00:21 +02:00
|
|
|
|
<?php
|
|
|
|
|
|
2012-04-13 11:03:05 +02:00
|
|
|
|
/*
|
|
|
|
|
* This file is part of the NelmioApiDocBundle.
|
|
|
|
|
*
|
|
|
|
|
* (c) Nelmio <hello@nelm.io>
|
|
|
|
|
*
|
|
|
|
|
* For the full copyright and license information, please view the LICENSE
|
|
|
|
|
* file that was distributed with this source code.
|
|
|
|
|
*/
|
|
|
|
|
|
2012-04-12 18:37:42 +02:00
|
|
|
|
namespace Nelmio\ApiDocBundle\Annotation;
|
2012-04-11 20:00:21 +02:00
|
|
|
|
|
2012-07-20 00:58:58 +02:00
|
|
|
|
use Symfony\Component\Routing\Route;
|
|
|
|
|
|
2012-04-11 20:00:21 +02:00
|
|
|
|
/**
|
|
|
|
|
* @Annotation
|
|
|
|
|
*/
|
|
|
|
|
class ApiDoc
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $filters = array();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $formType = null;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2012-04-12 17:24:38 +02:00
|
|
|
|
private $description = null;
|
|
|
|
|
|
2012-07-13 13:32:53 +01:00
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $documentation = null;
|
|
|
|
|
|
2012-04-12 17:24:38 +02:00
|
|
|
|
/**
|
|
|
|
|
* @var Boolean
|
|
|
|
|
*/
|
|
|
|
|
private $isResource = false;
|
2012-04-11 20:00:21 +02:00
|
|
|
|
|
2012-07-20 00:58:58 +02:00
|
|
|
|
/**
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $requirements = array();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $method;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $uri;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
private $parameters = array();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var Route
|
|
|
|
|
*/
|
|
|
|
|
private $route;
|
|
|
|
|
|
2012-04-11 20:00:21 +02:00
|
|
|
|
public function __construct(array $data)
|
|
|
|
|
{
|
|
|
|
|
if (isset($data['formType'])) {
|
|
|
|
|
$this->formType = $data['formType'];
|
2012-05-23 00:33:01 +02:00
|
|
|
|
} elseif (isset($data['filters'])) {
|
2012-04-11 20:00:21 +02:00
|
|
|
|
foreach ($data['filters'] as $filter) {
|
|
|
|
|
if (!isset($filter['name'])) {
|
|
|
|
|
throw new \InvalidArgumentException('A "filter" element has to contain a "name" attribute');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$name = $filter['name'];
|
|
|
|
|
unset($filter['name']);
|
|
|
|
|
|
2012-07-18 12:23:57 +02:00
|
|
|
|
$this->addFilter($name, $filter);
|
2012-04-11 20:00:21 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-12 17:24:38 +02:00
|
|
|
|
if (isset($data['description'])) {
|
|
|
|
|
$this->description = $data['description'];
|
2012-04-11 20:00:21 +02:00
|
|
|
|
}
|
2012-04-12 17:24:38 +02:00
|
|
|
|
|
2012-04-12 20:00:26 +02:00
|
|
|
|
$this->isResource = isset($data['resource']) && $data['resource'];
|
2012-04-11 20:00:21 +02:00
|
|
|
|
}
|
|
|
|
|
|
2012-04-12 17:48:21 +02:00
|
|
|
|
/**
|
2012-07-20 00:58:58 +02:00
|
|
|
|
* @param string $name
|
|
|
|
|
* @param array $filter
|
2012-04-12 17:48:21 +02:00
|
|
|
|
*/
|
2012-07-20 00:58:58 +02:00
|
|
|
|
public function addFilter($name, array $filter)
|
2012-04-11 20:00:21 +02:00
|
|
|
|
{
|
2012-07-20 00:58:58 +02:00
|
|
|
|
$this->filters[$name] = $filter;
|
2012-04-11 20:00:21 +02:00
|
|
|
|
}
|
|
|
|
|
|
2012-07-18 12:23:57 +02:00
|
|
|
|
/**
|
|
|
|
|
* @param string $name
|
2012-07-20 00:58:58 +02:00
|
|
|
|
* @param array $requirement
|
2012-07-18 12:23:57 +02:00
|
|
|
|
*/
|
2012-07-20 00:58:58 +02:00
|
|
|
|
public function addRequirement($name, array $requirement)
|
2012-07-18 12:23:57 +02:00
|
|
|
|
{
|
2012-07-20 00:58:58 +02:00
|
|
|
|
$this->requirements[$name] = $requirement;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param array $requirements
|
|
|
|
|
*/
|
|
|
|
|
public function setRequirements(array $requirements)
|
|
|
|
|
{
|
|
|
|
|
$this->requirements = array_merge($this->requirements, $requirements);
|
2012-07-18 12:23:57 +02:00
|
|
|
|
}
|
|
|
|
|
|
2012-04-12 17:48:21 +02:00
|
|
|
|
/**
|
|
|
|
|
* @return string|null
|
|
|
|
|
*/
|
2012-04-11 20:00:21 +02:00
|
|
|
|
public function getFormType()
|
|
|
|
|
{
|
|
|
|
|
return $this->formType;
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-12 17:48:21 +02:00
|
|
|
|
/**
|
2012-07-20 00:58:58 +02:00
|
|
|
|
* @return string
|
2012-04-12 17:48:21 +02:00
|
|
|
|
*/
|
2012-04-12 17:24:38 +02:00
|
|
|
|
public function getDescription()
|
|
|
|
|
{
|
|
|
|
|
return $this->description;
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-19 16:23:26 +02:00
|
|
|
|
/**
|
|
|
|
|
* @param string $description
|
|
|
|
|
*/
|
|
|
|
|
public function setDescription($description)
|
|
|
|
|
{
|
|
|
|
|
$this->description = $description;
|
|
|
|
|
}
|
|
|
|
|
|
2012-07-13 13:32:53 +01:00
|
|
|
|
/**
|
|
|
|
|
* @param string $documentation
|
|
|
|
|
*/
|
|
|
|
|
public function setDocumentation($documentation)
|
|
|
|
|
{
|
|
|
|
|
$this->documentation = $documentation;
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-12 17:48:21 +02:00
|
|
|
|
/**
|
|
|
|
|
* @return Boolean
|
|
|
|
|
*/
|
2012-04-12 17:24:38 +02:00
|
|
|
|
public function isResource()
|
2012-04-11 20:00:21 +02:00
|
|
|
|
{
|
2012-04-12 17:24:38 +02:00
|
|
|
|
return $this->isResource;
|
2012-04-11 20:00:21 +02:00
|
|
|
|
}
|
2012-07-20 00:58:58 +02:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string $method
|
|
|
|
|
*/
|
|
|
|
|
public function setMethod($method)
|
|
|
|
|
{
|
|
|
|
|
$this->method = $method;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string $uri
|
|
|
|
|
*/
|
|
|
|
|
public function setUri($uri)
|
|
|
|
|
{
|
|
|
|
|
$this->uri = $uri;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param array $parameters
|
|
|
|
|
*/
|
|
|
|
|
public function setParameters(array $parameters)
|
|
|
|
|
{
|
|
|
|
|
$this->parameters = $parameters;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param Route $route
|
|
|
|
|
*/
|
|
|
|
|
public function setRoute(Route $route)
|
|
|
|
|
{
|
|
|
|
|
$this->route = $route;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return Route
|
|
|
|
|
*/
|
|
|
|
|
public function getRoute()
|
|
|
|
|
{
|
|
|
|
|
return $this->route;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function toArray()
|
|
|
|
|
{
|
|
|
|
|
$data = array(
|
|
|
|
|
'method' => $this->method,
|
|
|
|
|
'uri' => $this->uri,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if ($description = $this->description) {
|
|
|
|
|
$data['description'] = $description;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($documentation = $this->documentation) {
|
|
|
|
|
$data['documentation'] = $documentation;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($filters = $this->filters) {
|
|
|
|
|
$data['filters'] = $filters;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($parameters = $this->parameters) {
|
|
|
|
|
$data['parameters'] = $parameters;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($requirements = $this->requirements) {
|
|
|
|
|
$data['requirements'] = $requirements;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
2012-04-11 20:00:21 +02:00
|
|
|
|
}
|