diff --git a/Annotation/ApiDoc.php b/Annotation/ApiDoc.php index 0b48c3b..863783c 100644 --- a/Annotation/ApiDoc.php +++ b/Annotation/ApiDoc.php @@ -47,6 +47,12 @@ class ApiDoc * @var array */ private $parameters = array(); + /** + * Headers that client can send. + * + * @var array + */ + private $headers = array(); /** * @var string @@ -230,6 +236,19 @@ class ApiDoc } } + if (isset($data['headers'])) { + foreach ($data['headers'] as $header) { + if (!isset($header['name'])) { + throw new \InvalidArgumentException('A "header" element has to contain a "name" attribute'); + } + + $name = $header['name']; + unset($header['name']); + + $this->addHeader($name, $header); + } + } + if (isset($data['output'])) { $this->output = $data['output']; } @@ -457,6 +476,15 @@ class ApiDoc $this->parameters = $parameters; } + /** + * @param $name + * @param array $header + */ + public function addHeader($name, array $header) + { + $this->headers[$name] = $header; + } + /** * Sets the response data as processed by the parsers - same format as parameters * @@ -611,8 +639,17 @@ class ApiDoc return $this->parameters; } + /** + * @return array + */ + public function getHeaders() + { + return $this->headers; + } + /** * @param boolean $deprecated + * @return $this */ public function setDeprecated($deprecated) { @@ -663,6 +700,10 @@ class ApiDoc $data['parameters'] = $parameters; } + if ($headers = $this->headers) { + $data['headers'] = $headers; + } + if ($requirements = $this->requirements) { $data['requirements'] = $requirements; } diff --git a/Resources/views/method.html.twig b/Resources/views/method.html.twig index 93a942f..0c75d6d 100644 --- a/Resources/views/method.html.twig +++ b/Resources/views/method.html.twig @@ -139,6 +139,29 @@ {% endif %} + + {% if data.headers is defined and data.headers is not empty %} +

Headers

+ + + + + + + + + + {% for name, infos in data.headers %} + + + + + + {% endfor %} + +
NameRequired?Description
{{ name }}{{ infos.required is defined and infos.required == 'true' ? 'true' : 'false'}}{{ infos.description is defined ? infos.description|trans : ''}}
+ {% endif %} + {% if data.parsedResponseMap is defined and data.parsedResponseMap is not empty %}

Return

@@ -282,6 +305,18 @@

{% endif %} + {% if data.headers is defined %} + + {% for name, infos in data.headers %} +

+ + = + - +

+ {% endfor %} + + {% endif %} +

=