added headers support

This commit is contained in:
miholeus 2016-05-19 14:28:32 +03:00
parent a7ad7ff144
commit e141ffd291
2 changed files with 76 additions and 0 deletions

View File

@ -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;
}

View File

@ -139,6 +139,29 @@
</table>
{% endif %}
{% if data.headers is defined and data.headers is not empty %}
<h4>Headers</h4>
<table class="fullwidth">
<thead>
<tr>
<th>Name</th>
<th>Required?</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for name, infos in data.headers %}
<tr>
<td>{{ name }}</td>
<td>{{ infos.required is defined and infos.required == 'true' ? 'true' : 'false'}}</td>
<td>{{ infos.description is defined ? infos.description|trans : ''}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% if data.parsedResponseMap is defined and data.parsedResponseMap is not empty %}
<h4>Return</h4>
<table class='fullwidth'>
@ -282,6 +305,18 @@
</p>
{% endif %}
{% if data.headers is defined %}
{% for name, infos in data.headers %}
<p class="tuple">
<input type="text" class="key" value="{{ name }}" />
<span>=</span>
<input type="text" class="value" value="{% if infos.default is defined %}{{ infos.default }}{% endif %}" placeholder="Value" /> <span class="remove">-</span>
</p>
{% endfor %}
{% endif %}
<p class="tuple">
<input type="text" class="key" placeholder="Key" />
<span>=</span>