Despacha una ruta y devuelve su respuesta.

@param Peticion $peticion
@param Ruta $ruta
@param int $estadoHttp

@return Respuesta
@throws \RuntimeException
962003
private function despacharRuta(Peticion $peticion, Ruta $ruta, $estadoHttp = null)
    {
        // Inicializamos respuesta a devolver
        $respuesta = new Respuesta();

        // Preparamos estado http
        if (!isset($estadoHttp)) {
            $estadoHttp = $ruta->estadoHttp;
        }
        $respuesta->definirEstadoHttp($estadoHttp);

        // Si la ruta representa una redirección
        if ($ruta->tipo == 'redir') {
            $respuesta->redirigir($ruta->accion, $estadoHttp);
        }

        // Si la ruta representa una vista
        if ($ruta->tipo == 'vista') {
            $vista = new Vista($this);
            $vista->estado_http = $estadoHttp;
            $respuesta->definirContenido($vista->renderizar($ruta->accion));
        }

        // Si la ruta representa un estado http
        if ($ruta->tipo == 'estado_http') {
            $nueva_ruta = $this->enrutador->buscar('get', $ruta->estadoHttp);

            if ('estado_http' != $nueva_ruta->tipo) {
                return $this->despacharRuta($peticion, $nueva_ruta, $ruta->estadoHttp);
            }
        }

        // Si la ruta representa un llamado de acción a un controlador
        if ($ruta->tipo == 'llamado') {
            // Procesamos la acción de la ruta
            list($controladorNombre, $accionNombre) = explode('@', $ruta->accion);

            // Construimos el controlador
            $controlador = $this->obtenerControlador($controladorNombre, $peticion, $respuesta, $ruta);

            // Validamos presencia de accion
            if (!method_exists($controlador, $accionNombre)) {
                throw new \RuntimeException("La acción '{$accionNombre}' no existe dentro del controlador.");
            }

            // Inicializamos el controlador previamente construido
            $controlador->inicializar();

            // Accionamos evento al iniciar la ejecución de la acción
            if ($controlador->existeEvento('iniciar_accion')) {
                if ($temp = $controlador->accionarEvento('iniciar_accion', $controladorNombre, $accionNombre)) {
                    if ($temp instanceof Respuesta) {
                        return $temp;
                    } elseif ($temp instanceof Ruta) {
                        return $this->despacharRuta($peticion, $temp);
                    }
                }
                unset($temp);
            }

            // Ejecutamos accion
            $resultado = call_user_func_array([$controlador, $accionNombre], (array) $ruta->parametros);

            // Accionamos evento al terminar la ejecución de la acción
            if ($controlador->existeEvento('terminar_accion')) {
                if ($temp = $controlador->accionarEvento('terminar_accion', $resultado)) {
                    $resultado = $temp;
                }
            }

            // Procesamos resultado de acción y devolvemos respuesta
            if ($resultado) {
                if ($resultado instanceof Respuesta) {
                    return $resultado;
                } elseif (is_string($resultado)) {
                    $respuesta->definirContenido($resultado);
                } elseif ($resultado instanceof Ruta) {
                    return $this->despacharRuta($peticion, $resultado);
                }
            }
        }

        // Devolvemos la respuesta previamente procesada
        return $respuesta;
    }
1050536
public function addBoleto(BoletoContract $boleto)
    {
        $this->boletos[] = $boleto;
        $this->iniciaDetalhe();

        $this->add(1, 1, 1);
        $this->add(2, 17, '');
        $this->add(18, 30, Util::formatCnab('9L', $this->getCodigoCliente(), 13, '0'));
        $this->add(31, 37, '');
        $this->add(38, 62, Util::formatCnab('X', $boleto->getNumeroControle(), 25));
        $this->add(63, 72, Util::formatCnab('9L', $boleto->getNossoNumero(), 10));
        $this->add(73, 104, '');
        $this->add(105, 107, '');
        $this->add(108, 108, Util::formatCnab('X', $this->getCarteiraNumero(), 1));
        $this->add(109, 110, self::OCORRENCIA_REMESSA); // REGISTRO
        if ($boleto->getStatus() == $boleto::STATUS_BAIXA) {
            $this->add(109, 110, self::OCORRENCIA_PEDIDO_BAIXA); // BAIXA
        }
        if ($boleto->getStatus() == $boleto::STATUS_ALTERACAO) {
            throw new \Exception('Banrisul não suporta alteração geral, use o comando `comandarInstrucao` no boleto para enviar uma solicitação especifica');
        }
        if ($boleto->getStatus() == $boleto::STATUS_ALTERACAO_DATA) {
            $this->add(109, 110, self::OCORRENCIA_ALT_VENCIMENTO);
        }
        if ($boleto->getStatus() == $boleto::STATUS_CUSTOM) {
            $this->add(109, 110, sprintf('%2.02s', $boleto->getComando()));
        }
        $this->add(111, 120, Util::formatCnab('X', $boleto->getNumeroDocumento(), 10));
        $this->add(121, 126, $boleto->getDataVencimento()->format('dmy'));
        $this->add(127, 139, Util::formatCnab('9', $boleto->getValor(), 13, 2));
        $this->add(140, 142, $this->getCodigoBanco());
        $this->add(143, 147, '');
        $this->add(148, 149, $this->isCarteiraRSX() ? '' : self::TIPO_COBRANCA_CREDENCIADA);
        $this->add(150, 150, $boleto->getAceite());
        $this->add(151, 156, $boleto->getDataDocumento()->format('dmy'));
        $this->add(157, 158, self::INSTRUCAO_SEM);
        $this->add(159, 160, self::INSTRUCAO_SEM);
        if ($boleto->getDiasProtesto() > 0) {
            $this->add(157, 158, self::INSTRUCAO_PROTESTAR_XX);
        } elseif ($boleto->getDiasBaixaAutomatica() > 0) {
            $this->add(157, 158, self::INSTRUCAO_DEVOLVER_XX);
        }
        if ($boleto->getMulta() > 0) {
            $this->add(159, 160, self::INSTRUCAO_MULTA_XX);
        }
        $this->add(161, 161, 0);
        $this->add(162, 173, Util::formatCnab('9', $boleto->getMoraDia(), 12, 2));
        $this->add(174, 192, '');

		if ($boleto->getDesconto() > 0) {
			$this->add(174, 179, $boleto->getDataDesconto()->format('dmy'));
			$this->add(180, 192, Util::formatCnab('9', $boleto->getDesconto(), 13, 2));
		}

        $this->add(193, 205, Util::formatCnab('9', 0, 13, 2));
        $this->add(206, 218, Util::formatCnab('9', 0, 13, 2));
        $this->add(219, 220, strlen(Util::onlyNumbers($boleto->getPagador()->getDocumento())) == 14 ? '02' : '01');
        $this->add(221, 234, Util::formatCnab('9L', $boleto->getPagador()->getDocumento(), 14));
        $this->add(235, 269, Util::formatCnab('X', $boleto->getPagador()->getNome(), 35));
        $this->add(270, 274, '');
        $this->add(275, 314, Util::formatCnab('X', $boleto->getPagador()->getEndereco(), 40));
        $this->add(315, 321, '');
        $this->add(322, 324, Util::formatCnab('9', $boleto->getMulta(), 3, 1));
        $this->add(325, 326, '00');
        $this->add(327, 334, Util::formatCnab('9L', $boleto->getPagador()->getCep(), 8));
        $this->add(335, 349, Util::formatCnab('X', $boleto->getPagador()->getCidade(), 15));
        $this->add(350, 351, Util::formatCnab('X', $boleto->getPagador()->getUf(), 2));

        if ($this->isCarteiraRSX()){
            $this->add(352, 371, '');
        }else{
            $this->add(352, 355, '');
            $this->add(356, 357, '');
            $this->add(358, 369, '');
            $this->add(370, 371, Util::formatCnab('9', $boleto->getDiasProtesto($boleto->getDiasBaixaAutomatica()), 2));
        }

        $this->add(372, 394, '');
        $this->add(395, 400, Util::formatCnab('9', $this->iRegistros + 1, 6));

        $this->valorTotal += $boleto->getValor();

        return true;
    }
318199
public function execute(TransactionData $transactionData, $argument = null)
    {
        $transactionData->setResponse(
            $this->processAndGetResponse(
                $transactionData,
                function (TransactionData $transaction, Expectation $expectation) {
                    $this->validateRequestOrThrowException($expectation, $this->logger);
                    $executions = $this->searchForExecutionsCount($expectation);
                    $this->logger->debug('Listed ' . \count($executions) . ' request matching the expectation');

                    return $transaction->getResponse()
                        ->withStatus(200)
                        ->withHeader('Content-Type', 'application/json')
                        ->withBody(new StringStream(json_encode($executions)));
                }
            )
        );
    }
79158
public function execute(string $uri, PessoaJuridica $pessoaJuridica)
    {
        return $this->send(self::POST_METHOD, $uri, $pessoaJuridica->toArray());
    }
912582
public function setOptInEmailStatus($iStatus)
    {
        $this->oxnewssubscribed__oxemailfailed = new \OxidEsales\Eshop\Core\Field($iStatus, \OxidEsales\Eshop\Core\Field::T_RAW);
        $this->save();
    }
53721
public function submission($formData)
    {
        if ($form_settings = $this->_block->getContent(true)) {
            $form_settings = $this->_defaultData($form_settings);
            $form_rules = BlockFormRule::get_rules($form_settings->template ?: $this->_block->name);
            $v = Validator::make($formData, $form_rules);
            $captcha = Securimage::captchaCheck();

            // check form rules
            if ($v->passes() && !($form_settings->captcha && !$captcha)) {
                // delete blank and system fields
                unset($formData['captcha_code']);

                // Save data function (override this function to save data differently)
                $form_submission = $this->submissionSaveData($formData);
                if (!$form_submission->id) {
                    FormMessage::add('submission_save_error', 'Unable to save the form.');
                }

                // Send email
                if ($this->submissionSendEmail(unserialize($form_submission->content), $form_settings)) {
                    $form_submission->sent = 1;
                    $form_submission->save();
                }

                Session::put('form_data', $form_submission);
                return \redirect(PageBuilder::pageUrl($form_settings->page_to));
            } else {
                FormMessage::set($v->messages());
                if (!$captcha && $form_settings->captcha) {
                    FormMessage::add('captcha_code', 'Invalid Captcha Code, try again.');
                }
            }

        } else {
            return Response::make('No form settings found, try saving the form block in the admin.', 500);
        }

        return false;
    }
905575
public function setStdout($stdout)
    {
        if ($this->running) {
            throw new RuntimeException('Process already running.');
        }

        $this->descriptorspec[static::STDOUT] = $stdout;

        return $this;
    }
1327505
public function procesarPetición(Peticion $peticion)
    {
        try {

            // Iniciamos silenciador de salidas
            ob_start();

            // Verificamos si la aplicación está preparada
            if (!$this->preparada) {
                return $this->generarRespuestaError($peticion, 503);
            }

            // Buscamos la ruta a despachar a traves de la peticion
            $ruta = $this->enrutador->buscar($peticion->metodo, $peticion->uri);

            // Despachamos ruta encontrada
            $respuesta = $this->despacharRuta($peticion, $ruta);

            // Accionamos evento al terminar de procesar petición
            if ($this->existeEvento('terminar_peticion')) {
                $this->accionarEvento('terminar_peticion', $respuesta);
            }

            // Cerramos silenciador de salidas
            ob_end_clean();

            return $respuesta;

        } catch (\Exception $e) {
            return $this->generarRespuestaError($peticion, 500, $e);
        } catch (\Throwable $e) {
            return $this->generarRespuestaError($peticion, 500, $e);
        }
    }
1324680
function doSelect(PDO $conn = null) {
		$q = clone $this;

		if (!$q->getTable()) {
			throw new RuntimeException('No table specified.');
		}

		$q->setAction(self::ACTION_SELECT);
		return $q->getQuery($conn)->bindAndExecute();
	}
1318433
public function setLastVisit($timestamp = null) {

        // Container
        $container = $this->getContainer();

        // On récupère le table.
        $table = new UserTable($container->get('db'));
        $table->setContainer($container);

        // On met à jour la date.
        return $table->setLastVisit($timestamp, $this->getProperty('id'));
    }
824981
public function runQuery($queryString){

		$cmd = strtoupper(substr(trim($queryString), 0, 6));
		static $list = array('UPDATE' => 1, 'DELETE' => 1, 'INSERT' => 1, 'REPLAC' => 1);
		$this->affectedRows = false;

		if(isset($list[$cmd])){
			$this->affectedRows = $this->resource->exec($queryString);

			if($this->affectedRows === false){
				$error = $this->resource->errorInfo();
				throw new DriverException("SQLSTATE[$error[0]]: $error[2]", $error[1], $queryString);
			} else
				return true;
		}

		$result = $this->resource->query($queryString);

		if($result === false){
			$error = $this->resource->errorInfo();
			throw new DriverException("SQLSTATE[$error[0]]: $error[2]", $error[1], $queryString);
		}else
			return $result;
	}
1353652
public function agregarRuta($metodo, $ruta, $accion, array $parametros = null, $estado_http = 200)
    {
        // Normalizamos el uri de la ruta argumentada
        $ruta = $this->normalizarUri($ruta);

        // Limpiamos y dividimos la ruta en partes
        $partes = explode('/', trim($ruta, '/ '));

        // Contamos las partes resultantes
        $conteo_partes = count($partes);

        // Declaramos la rama base como actual
        $rama_actual = &$this->arbol_rutas;

        // Preparamos variable que clasifica la ruta como simple
        $es_simple = true;

        // Verificamos si hay suficientes partes para recorrerlas
        if (!($conteo_partes === 1 && $partes[0] === '')) {

            // Recorremos las partes para actualizar la rama actual
            for ($i = 0; $i < $conteo_partes; $i++) {

                if (substr($partes[$i], 0, 1) == ':') {
                    $es_simple = false;
                    if (!isset($rama_actual['ramas']['*'])) {
                        $rama_actual['ramas']['*'] = ['ramas' => [], 'nombre' => substr($partes[$i], 1)];
                    }

                    $rama_actual = &$rama_actual['ramas']['*'];
                } else {
                    if (!isset($rama_actual['ramas'][$partes[$i]])) {
                        $rama_actual['ramas'][$partes[$i]] = ['ramas' => []];
                    }

                    $rama_actual = &$rama_actual['ramas'][$partes[$i]];
                }
            }

        }

        // Preparamos el metodo argumentado
        $metodo = (array)$metodo;

        // Insertamos la ruta a la rama actual
        $rama_actual['ruta'] = $ruta;

        // Preparamos las acciones de la rama actual
        if (!isset($rama_actual['x'])) {
            $rama_actual['x'] = [];
        }

        // Recorremos los metodos para agregar las respectivas acciones
        foreach ($metodo as $m) {
            // Agregamos ruta simple en caso necesario
            if ($es_simple) {
                $this->rutas_simples[$ruta][strtoupper($m)]['accion'] = $accion;
                $this->rutas_simples[$ruta][strtoupper($m)]['estado_http'] = $estado_http;
                if (isset($parametros)) {
                    $this->rutas_simples[$ruta][strtoupper($m)]['parametros'] = $parametros;
                }
            } else {
                $rama_actual['x'][strtoupper($m)]['accion'] = $accion;
                $rama_actual['x'][strtoupper($m)]['estado_http'] = $estado_http;
                if (isset($parametros)) {
                    $rama_actual['x'][strtoupper($m)]['parametros'] = $parametros;
                }
            }
        }

        // Liberamos memoria
        unset($rama_actual);
    }
361538
public function getEstado(\sasco\LibreDTE\FirmaElectronica $Firma)
    {
        // solicitar token
        $token = \sasco\LibreDTE\Sii\Autenticacion::getToken($Firma);
        if (!$token)
            return false;
        // consultar estado dte
        $run = $Firma->getID();
        if ($run===false)
            return false;
        list($RutConsultante, $DvConsultante) = explode('-', $run);
        list($RutCompania, $DvCompania) = explode('-', $this->getEmisor());
        list($RutReceptor, $DvReceptor) = explode('-', $this->getReceptor());
        list($Y, $m, $d) = explode('-', $this->getFechaEmision());
        $xml = \sasco\LibreDTE\Sii::request('QueryEstDte', 'getEstDte', [
            'RutConsultante'    => $RutConsultante,
            'DvConsultante'     => $DvConsultante,
            'RutCompania'       => $RutCompania,
            'DvCompania'        => $DvCompania,
            'RutReceptor'       => $RutReceptor,
            'DvReceptor'        => $DvReceptor,
            'TipoDte'           => $this->getTipo(),
            'FolioDte'          => $this->getFolio(),
            'FechaEmisionDte'   => $d.$m.$Y,
            'MontoDte'          => $this->getMontoTotal(),
            'token'             => $token,
        ]);
        // si el estado se pudo recuperar se muestra
        if ($xml===false)
            return false;
        // entregar estado
        return (array)$xml->xpath('/SII:RESPUESTA/SII:RESP_HDR')[0];
    }
1223633
public function run(): SendableResponse
    {
        $request  = WebRequest::fromRawSource();
        $response = new WebResponse($request);
        if ($response->isFixed()) {
            return $response; // http version of request not supported
        }

        try {
            $requestUri = $request->uri();
        } catch (MalformedUri $mue) {
            $response->status()->badRequest();
            return $response;
        }

        $this->configureRouting($this->routing);
        $uriResource = $this->routing->findResource($requestUri, $request->method());
        if ($this->switchToHttps($request, $uriResource)) {
            $response->redirect($uriResource->httpsUri());
            return $response;
        }

        try {
            if (!$uriResource->negotiateMimeType($request, $response)) {
                return $response;
            }

            $this->sessionHandshake($request, $response);
            if ($uriResource->applyPreInterceptors($request, $response)) {
                $response->write($uriResource->resolve($request, $response));
                $uriResource->applyPostInterceptors($request, $response);
            }
        } catch (\Exception $e) {
            $this->injector->getInstance(ExceptionLogger::class)->log($e);
            $response->write($response->internalServerError($e->getMessage()));
        }

        return $response;
    }
324930
public function request($url, $requestData) {
        if(!class_exists('GuzzleHttp\Client')) {
            throw new RuntimeException('The guzzle client is not installed. Please install guzzlehttp/guzzle');
        }

        $client = new Client();

        //We do not care exceptions, this will handled by the user
        $response = $client->request('POST', $url, ['form_params' => $requestData]);

        return $response->getBody()->getContents();
    }
1165605
public function createSubscription(Create\RequestData $requestData)
    {
        $request = new Create\Request($requestData);

        return $this->sendRequest($request, Create\ApiResponse::class);
    }
299629
public function execute($operationConfig, $operationMetadata, $inputMap) {
        $request = $this->getRequest($operationConfig, $operationMetadata, $inputMap);

        try {
            $response = $this->client->send($request, array_merge(ApiConfig::getProxy(), ApiConfig::getTimeout()));
            $statusCode = $response->getStatusCode();
            $responseContent = $response->getBody()->getContents();
            
            if ($statusCode < self::HTTP_AMBIGUOUS) {
                
                if (ApiConfig::isDebug()) {
                    $this->logger->debug("---------------------");
                    $this->logger->debug(">>request(".$request->getMethod().") ". $request->getUri()->__toString() );    
                    $this->logger->debug(">>headers: ", $request->getHeaders());
                    $this->logger->debug(">>body: ". $request->getBody());
                    
                    $this->logger->debug("<<statusCode: ". $statusCode);
                    $this->logger->debug("<<headers: ", $response->getHeaders());
                    $this->logger->debug("<<body: ". $responseContent);
                    $this->logger->debug("---------------------");
                }
                
                if (strlen($responseContent) > 0) {
                    return json_decode($responseContent, true);
                } else {
                    return array();
                }
            } else {
                $this->handleException($response, $request);
            }
        } catch (RequestException $ex) {
            if ($ex->hasResponse()) {
                $this->handleException($ex->getResponse(), $request);
            } else {
                throw new ApiException($ex->getMessage());
            }
        }
    }