middleware[] = $middleware; } private function getOptions($url, $business, $method, $permissions, $middleware) { if (!is_array($permissions)) { $permissions = array($permissions); } if (!is_array($middleware)) { $middleware = array($middleware); } $permissions_string = implode(",", $permissions); $middleware_string = []; foreach (array_merge($this->middleware, $middleware) as $mid) { $middleware_string[] = $mid . (strpos($mid, ":") !== false ? "," : ":") . $permissions_string; } return [function() use($business, $method, $permissions) { $controller = new LuController(); if (strpos($business, "\\") === false) { $business = "App\\Http\\Business\\" . $business . "Business"; } return $controller->execute($business, $method); }, 'middleware' => $middleware_string]; } /** * @param $url string * @param $business string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function get($url, $business, $method, $permissions = array(), $middleware = array()) { global $app; return $app->get($url, $this->getOptions($url, $business, $method, $permissions, $middleware)); } /** * @param $url string * @param $business string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function post($url, $business, $method, $permissions = array(), $middleware = array()) { global $app; return $app->post($url, $this->getOptions($url, $business, $method, $permissions, $middleware)); } /** * @param $url string * @param $business string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function put($url, $business, $method, $permissions = array(), $middleware = array()) { global $app; return $app->put($url, $this->getOptions($url, $business, $method, $permissions, $middleware)); } /** * @param $url string * @param $business string * @param $method string * @param array $permissions string|string[] * @param array $middleware string|string[] * @return mixed */ public function delete($url, $business, $method, $permissions = array(), $middleware = array()) { global $app; return $app->delete($url, $this->getOptions($url, $business, $method, $permissions, $middleware)); } }