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); }
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(); } }
public function configurar_respuesta(respuesta_rest $rta) { parent::configurar_respuesta($rta); $this->proveedor_autenticacion->requerir_autenticacion($rta); }
public function __construct($mensaje = "Acceso denegado", $detalle = array()) { parent::__construct(403, $mensaje, $detalle); }