27 if ($filePath ===
null) {
31 throw new \RuntimeException(
'Cannot write to documentation directory.');
32 }
elseif (file_exists($filePath)) {
35 $fileContent = str_replace($endHtml,
'', $fileContent);
36 $content =
"{$fileContent}{$content}";
56 $arguments =
'This call does not accept a request body.';
57 $requestParametersHtml =
'';
61 $requestParametersHtml = <<<HTML
62 <table
class=
"docutils field-list" frame=
"void" rules=
"none" width=
"400">
64 <col width=
"35%" class=
"field-name">
65 <col width=
"65%" class=
"field-body">
68 <tr
class=
"field-odd field">
69 <th
class=
"field-name">
Request parameters:</th>
70 <td
class=
"field-body">
71 <ul
class=
"first last simple">
81 $responseArrayKeys = array_keys(
$response);
82 $responseParameters =
"Parameters should be specified manually.";
83 foreach ($responseArrayKeys as $key) {
85 $responseParameters =
'';
90 if (empty($responseParameters)) {
94 $responseParametersHtml = <<<HTML
95 <table
class=
"docutils field-list" frame=
"void" rules=
"none" width=
"400">
97 <col width=
"35%" class=
"field-name">
98 <col width=
"65%" class=
"field-body">
101 <tr
class=
"field-odd field">
102 <th
class=
"field-name">
Response attributes:</th>
103 <td
class=
"field-body">
104 <ul
class=
"first last simple">
105 {$responseParameters}
112 $resourcePath = urldecode($resourcePath);
113 $resource = str_replace(
'/',
'-', preg_replace(
'#/\w*/V\d+/(.*)#',
'${1}', $resourcePath));
114 $lowerCaseResource = strtolower(
$resource);
115 $lowerCaseMethod = strtolower($httpMethod);
116 $beginningHtml = <<<HTML
117 <div
class=
"col-xs-9" role=
"main">
118 <div
class=
"bs-docs-section">
120 $headingHtml = <<<HTML
121 <h2
class=
"api2" id=
"$lowerCaseResource">
$resource</h2>
122 <h3
class=
"api3" id=
"$lowerCaseMethod-$lowerCaseResource">$httpMethod $resourcePath</h3>
125 $responseHtml = <<<HTML
126 <h4
class=
"api4" id=”$lowerCaseResource-response>
Response</h4>
128 $requestResponseParametersHtml = <<<HTML
129 <h3
class=
"api3" id=
"$lowerCaseResource-parameters">
Request and response parameters</h3>
132 $content =
"{$beginningHtml}{$headingHtml}<pre>{$arguments}</pre>{$responseHtml}<pre>{$response}" 133 .
"</pre>{$requestResponseParametersHtml}{$requestParametersHtml}{$responseParametersHtml}{$endHtml}";
145 <h3
class=
"api3" id=
"products-responses">
Response codes</h3>
146 <table
class=
"docutils field-list" frame=
"void" rules=
"none" width=
"400">
148 <col width=
"35%" class=
"field-name">
149 <col width=
"65%" class=
"field-body">
152 <tr
class=
"field-odd field">
153 <th
class=
"field-name">Normal response codes:</th>
154 <td
class=
"field-body">
155 <ul
class=
"first last simple">
156 <li><strong>SUCCESS_CODE</strong> - SUCCESS_DESCRIPTION</li>
162 <table
class=
"docutils field-list" frame=
"void" rules=
"none" width=
"400">
164 <col width=
"35%" class=
"field-name">
165 <col width=
"65%" class=
"field-body">
168 <tr
class=
"field-odd field">
169 <th
class=
"field-name">Error response codes:</th>
170 <td
class=
"field-body">
171 <ul
class=
"first last simple">
172 <li><strong>ERROR_CODE</strong> - ERROR_DESCRIPTION</li>
193 $documentationDir =
$varDir .
'/log/rest-documentation/';
194 $debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
195 $pathToFile = $documentationDir;
197 foreach ($debugBackTrace as $traceItem) {
199 if (count($traceItem) == 3) {
201 $fileName = lcfirst(substr($traceItem[
'function'], 4));
203 $pathToFile .= str_replace(
'\\',
'/', substr($traceItem[
'class'], 0, -4)) .
'/';
207 if (!file_exists($pathToFile)) {
208 if (!
mkdir($pathToFile, 0755,
true)) {
209 throw new \RuntimeException(
'Unable to create missing directory for REST documentation generation');
213 $filePath = $pathToFile .
$fileName .
'.html';
227 $parametersAsHtml =
'';
228 if (is_array($parameters)) {
229 foreach (array_keys($parameters) as $parameter) {
230 $parametersAsHtml = $parametersAsHtml .
'<li><strong>' . $parameter .
231 '</strong> (<em>Change type manually!</em>) TBD.</li>';
234 $parametersAsHtml =
'<li><strong>' .
'scalar_value' .
235 '</strong> (<em>Change type manually!</em>) TBD.</li>';
237 return $parametersAsHtml;
elseif(isset( $params[ 'redirect_parent']))
defined('TESTS_BP')||define('TESTS_BP' __DIR__
generateHtmlContent($httpMethod, $resourcePath, $arguments, $response)
generateDocumentation($httpMethod, $resourcePath, $arguments, $response)
if(!isset($_GET['template'])) $varDir
mkdir($pathname, $mode=0777, $recursive=false, $context=null)
retrieveParametersAsHtml($parameters)