Exemplo n.º 1
0
 public function testConfiguracionRespuestaSinDetalle()
 {
     $status = 400;
     $mensaje = "mi mensaje";
     $arreglo = array();
     $error = new rest_error($status, $mensaje, $arreglo);
     $r = new respuesta_rest();
     $error->configurar_respuesta($r);
     $data = $r->get_data();
     $this->assertArrayNotHasKey('detalle', $data);
     $error = new rest_error($status, $mensaje);
     $error->configurar_respuesta($r);
     $data = $r->get_data();
     $this->assertArrayNotHasKey('detalle', $data);
 }
Exemplo n.º 2
0
 public function procesar()
 {
     $this->logger->debug("Iniciando el pedido");
     try {
         $method = $this->request->get_method();
         $url = $this->get_url_relativa();
         $url = ltrim($url, '/');
         $this->logger->debug("Procesando URL '/{$url}'");
         $partes_url = explode('/', $url);
         $this->controlar_acceso($url);
         if ($partes_url[0] == $this->settings['prefijo_api_docs']) {
             $this->mostrar_documentacion($url);
         } else {
             $recurso = $this->router->buscar_controlador($method, $url);
             $this->logger->debug("Controlador encontrado {$recurso->archivo} :: {$recurso->accion} (" . implode(',', $recurso->parametros) . ")");
             $recurso->ejecutar_accion();
         }
     } catch (rest_error_autenticacion $ex) {
         $ex->configurar_respuesta($this->response);
         $this->logger->info("Excepcion de Autenticacion. Autenticar y reintentar");
         $this->logger->info(var_export($this->response, true));
     } catch (rest_error_autorizacion $ex) {
         $ex->configurar_respuesta($this->response);
         $this->logger->info("Error de Autorizacion.");
     } catch (rest_error $ex) {
         // Excepciones controladas, partel del flujo normal de la API
         $ex->configurar_respuesta($this->response);
         $this->logger->info("La api retornó un error. Status: " . $this->response->get_status());
         $this->logger->info(var_export($this->response->get_data(), true));
     } catch (Exception $ex) {
         // Excepcion del codigo del proyecto - Error de programación, no tiene que entrar aca en el flujo normal
         $this->logger->error("Error al ejecutar el pedido. " . $ex->getMessage());
         $this->logger->error($ex->getTraceAsString());
         $error = new rest_error(500, "Error Interno en el servidor: " . $ex->getMessage());
         $error->configurar_respuesta($this->response);
     }
     $this->response->finalizar();
     $this->vista->escribir();
     $this->logger->debug("Pedido finalizado");
     if ($this->config('debug')) {
         $this->logger->debug(var_export($this->response, true));
     }
     if (method_exists($this->logger, 'guardar')) {
         // es el logger de toba
         $this->logger->guardar();
     }
 }
Exemplo n.º 3
0
 public function configurar_respuesta(respuesta_rest $rta)
 {
     parent::configurar_respuesta($rta);
     $this->proveedor_autenticacion->requerir_autenticacion($rta);
 }
Exemplo n.º 4
0
 public function __construct($mensaje = "Acceso denegado", $detalle = array())
 {
     parent::__construct(403, $mensaje, $detalle);
 }