1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
<?php
MainFactory::load_class('HttpApiV2Controller');
class DefaultApiV2Controller extends HttpApiV2Controller
{
public function get()
{
$this->_returnHelpResponse();
}
public function post()
{
$this->_returnHelpResponse();
}
public function put()
{
$this->_returnHelpResponse();
}
public function patch()
{
$this->_returnHelpResponse();
}
public function delete()
{
$this->_returnHelpResponse();
}
public function head()
{
$this->_returnHelpResponse();
}
public function options()
{
$this->_returnHelpResponse();
}
protected function _returnHelpResponse()
{
$apiUrl = GM_HTTP_SERVER . $this->api->request->getRootUri() . '/v2/';
$iterator = new IteratorIterator(new DirectoryIterator(DIR_FS_CATALOG . 'GXMainComponents/Controllers/Api/v2'));
$resources = [];
foreach($iterator as $item)
{
$controllerFile = $item->getFilename();
if($controllerFile !== 'AbstractImagesApiV2Controller.inc.php'
&& $controllerFile !== 'DefaultApiV2Controller.inc.php'
&& $controllerFile !== 'ApiV2Authenticator.inc.php'
&& $controllerFile !== 'legacy'
&& $controllerFile !== '.'
&& $controllerFile !== '..')
{
$resources[] = $this->_camelCaseToUnderscore(str_replace('ApiV2Controller.inc.php', '',
$item->getFilename()));
}
}
sort($resources);
$response = [];
foreach($resources as $resource)
{
$response[$resource] = $apiUrl . $resource;
}
$this->_writeResponse($response);
}
protected function _camelCaseToUnderscore($input)
{
$pattern = '!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!';
preg_match_all($pattern, $input, $matches);
$return = $matches[0];
foreach($return as &$match)
{
$match = $match === strtoupper($match) ? strtolower($match) : lcfirst($match);
}
return implode('_', $return);
}
}