示例#1
0
 public function run()
 {
     try {
         $request = $this->requestFactory->createRequest();
         $controller = $this->controllerFactory->create($request);
         $response = $controller->run($request);
     } catch (AuthorizationException $e) {
         $response = new Response(['message' => $e->getMessage()], 401);
     } catch (ApiException $e) {
         $response = new Response(['message' => $e->getMessage()], $e->getCode() ?: 400);
     }
     http_response_code($response->getCode());
     header('Content-Type: application/json');
     $body = json_encode($response->getData());
     header('X-Api-Signature: ' . hash_hmac('sha256', $body, $this->configuration->getPrivateKey()));
     echo $body;
 }
示例#2
0
 function __construct($controller_name, $action, $format, $params)
 {
     //vecchio setup, e' stata aggiunta la creazione del controller
     $this->controller = ControllerFactory::create($controller_name);
     //hack per supportare i vecchi mapping con "php".
     //$format = DataFormatManager::getFormatString($format);
     $this->__check_reserved_action($action);
     if ($format !== "raw") {
         $this->__check_protected_action($action, $format);
     }
     DataFormatManager::checkFormatSupported($format);
     $this->action = $action;
     $this->format = $format;
     $this->params = $params;
     $this->format_helper = DataFormatManager::getFormat($format);
     $this->execute_action = true;
     $this->action_result = null;
 }
示例#3
0
 private static function validate($name)
 {
     try {
         $url = URL::getInstance();
         if ($name == null) {
             if (Session::getInstance()->isStarted()) {
                 $url->setController(DEFAULT_SESSION_CONTROLLER);
                 $url->setAction(DEFAULT_SESSION_ACTION);
                 return DEFAULT_SESSION_CONTROLLER;
             } else {
                 $url->setController(DEFAULT_REQUEST_CONTROLLER);
                 $url->setAction(DEFAULT_REQUEST_ACTION);
                 return DEFAULT_REQUEST_CONTROLLER;
             }
         }
         $controller = $name . CONTROLLER;
         $class = new ReflectionClass($controller);
         if ($class->isAbstract()) {
             throw new LogicException();
         }
         $classScope = $class->getConstant('SCOPE');
         if ($class->implementsInterface('Context')) {
             if (Scope::isAcceptable($classScope)) {
                 return $name;
             }
             if ($classScope == Scope::SESSION) {
                 $url->setController(DEFAULT_REQUEST_CONTROLLER);
                 $url->setAction(DEFAULT_REQUEST_ACTION);
                 return DEFAULT_REQUEST_CONTROLLER;
             }
             if ($classScope == Scope::REQUEST) {
                 ControllerFactory::create(DEFAULT_APPLICATION_CONTROLLER)->redirectToError();
             }
         }
         return DEFAULT_APPLICATION_CONTROLLER;
     } catch (LogicException $e) {
         $e->getTraceAsString();
         ControllerFactory::create(DEFAULT_APPLICATION_CONTROLLER)->redirectToError();
     }
 }
 public static function getController($name, $action = null, $params = null)
 {
     $mycontroller = ControllerFactory::create($name, $action, $params);
     return $mycontroller;
 }
 /**
  * @Invocable
  */
 protected function comment()
 {
     ControllerFactory::create('Comment')->add($this, 'show');
 }
示例#6
0
 /**
  * Load and execute controller directly.
  *
  * @author anza
  */
 public function loader()
 {
     $controller = ControllerFactory::create($this->registry);
     $controller->execute();
 }