Skip to content
Snippets Groups Projects
Commit 46febde4 authored by Fernando Alvez's avatar Fernando Alvez
Browse files

fixup! Related #49 Implementando guzzle en worker

parent 2b66ad62
No related branches found
No related tags found
No related merge requests found
Pipeline #902 passed with warnings with stages
in 16 minutes and 37 seconds
<?php
namespace UNAM\Tupa\Core\Config\Builder;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class CredentialsConfigBuilder implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder('credentials');
$treeBuilder->getRootNode()
->children()
->scalarNode('api_basic_tupa')->end()
->end()
;
return $treeBuilder;
}
}
......@@ -26,6 +26,7 @@ abstract class Configuracion
const DATABASE_DB_INDEX = 'db';
const WORKER_INDEX = 'worker';
const FRONTEND_INDEX = 'frontend';
const CREDENTIAL_INDEX = 'credentials';
/**
* @param array $configurations
......@@ -35,6 +36,41 @@ abstract class Configuracion
$this->configurations = $configurations;
}
/**
* Obtiene el User de la credencial de Api Tupa Basic
* @return mixed|null
* @throws \UNAM\Tupa\Worker\Errors\ErrorTupa
*/
public function getUserApiTupaBasic()
{
$credencial = json_decode($this->getParametroCredentials('api_basic_tupa'), true);
return isset($credencial[0][0]) ? $credencial[0][0] : null;
}
/**
* Obtiene el Password de la credencial de Api Tupa Basic
*
* @return mixed|null
* @throws \UNAM\Tupa\Worker\Errors\ErrorTupa
*/
public function getPassApiTupaBasic()
{
$credencial = json_decode($this->getParametroCredentials('api_basic_tupa'), true);
return isset($credencial[0][1]) ? $credencial[0][1] : null;
}
/**
* Obtiene la Url de la credencial de Api Tupa Basic
*
* @return mixed|null
* @throws \UNAM\Tupa\Worker\Errors\ErrorTupa
*/
public function getUrlApiTupaBasic()
{
$credencial = json_decode($this->getParametroCredentials('api_basic_tupa'), true);
return isset($credencial[0][2]) ? $credencial[0][2] : null;
}
/**
* Obtiene la URL pública para el IDP
*
......@@ -1145,6 +1181,26 @@ abstract class Configuracion
return $this->hasParametro(self::SERVICES_INDEX, $parametro);
}
public function getParametroCredentials($parametro)
{
if (!$this->hasParametroCredentials($parametro)) {
throw new \UNAM\Tupa\Worker\Errors\ErrorTupa("No se encuentra definido el parametro '$parametro' en las configuraciones de Credentials.");
}
return $this->getParametro(self::CREDENTIAL_INDEX, $parametro);
}
public function setParametroCredentials($parametro, $valor = null)
{
$this->setParametro(self::CREDENTIAL_INDEX, $parametro, $valor);
}
public function hasParametroCredentials($parametro)
{
return $this->hasParametro(self::CREDENTIAL_INDEX, $parametro);
}
/**
* Almacena valores en claves simples o compuestas (tipo array).
*
......
......@@ -48,9 +48,9 @@ TOBA_SESSION_NAME=TOBA_TUPA
#SSO_SP_IDP_NAME=service.example.com
##### CONFIG API REST #####
CREDENCIALES_API_BASIC_TUPA=[["tupausr", "tupapass", "http://tupa-api-backend/api-url/"]]
CREDENCIALES_API_BASIC_MAPUCHE=[["tupausr", "tupapass", "http://siu-mapuche/api-url/"]]
CREDENCIALES_API_BASIC_USUARIOS=[["tupausr", "tupapass", "http://siu-arai-usuarios/api-url/"]]
CREDENCIALES_API_BASIC_TUPA=[["tupausr","tupapass","http://tupa-api-backend/api-url/"]]
CREDENCIALES_API_BASIC_MAPUCHE=[["tupausr","tupapass","http://siu-mapuche/api-url/"]]
CREDENCIALES_API_BASIC_USUARIOS=[["tupausr","tupapass","http://siu-arai-usuarios/api-url/"]]
##### CONFIG REDIS #####
REDIS_HOST=tupa_redis
......
......@@ -24,6 +24,4 @@ WORKER_QUEUE_MAIL_RETRASO=2000
#WORKER_QUEUE_MAIL_DRY_RUN=0
##### CONFIG API #####
API_URL=http://localohst:9002/api/v1
API_USER=admin
API_PASS=admin
\ No newline at end of file
CREDENCIALES_API_BASIC_TUPA=[["tupausr","tupapass","http://tupa-api-backend/api-url/"]]
\ No newline at end of file
......@@ -56,7 +56,7 @@ $mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100, 30));
$messages = new Messages($mailer, new EmailTemplate(), Factory::getJobLogger());
$queueConsumer->bind(Messages::QUEUE_MAIL_SIMPLE, new \UNAM\Tupa\Worker\Processors\SendMailProcessor(Factory::getJobLogger(), $messages, $workerConfig, $transport));
$queueConsumer->bind(Registro::QUEUE_CAMBIO_ESTADO_REGISTRO, new \UNAM\Tupa\Worker\Processors\ChangeStatusRegistroProcessor(Factory::getJobLogger(), new GuzzleHttp\Client()));
$queueConsumer->bind(Registro::QUEUE_CAMBIO_ESTADO_REGISTRO, new \UNAM\Tupa\Worker\Processors\ChangeStatusRegistroProcessor(Factory::getJobLogger(), new GuzzleHttp\Client(), $workerConfig));
/**
* Applications Worker Comamnds
......
......@@ -24,4 +24,7 @@ services:
helo: $env(MAILER_HELO)$
redis:
host: $env(REDIS_HOST)$
port: $env(REDIS_PORT)$
\ No newline at end of file
port: $env(REDIS_PORT)$
credentials:
api_basic_tupa: $env(CREDENCIALES_API_BASIC_TUPA)$
\ No newline at end of file
......@@ -14,6 +14,7 @@ use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Pimple\Container;
use Symfony\Component\Config\Definition\Processor;
use UNAM\Tupa\Core\Config\Builder\CredentialsConfigBuilder;
use UNAM\Tupa\Core\Config\Builder\WorkerConfigBuilder;
use UNAM\Tupa\Core\Util\Varios;
use UNAM\Tupa\Worker\Config\Builder\RedisConfigBuilder;
......@@ -158,6 +159,13 @@ class Factory
return $processor->processConfiguration($configuration, ['worker' => $config]);
};
$container['credentials-config'] = function ($c) {
$config = $c['parameters-config']['credentials'];
$processor = new Processor();
$configuration = new CredentialsConfigBuilder();
return $processor->processConfiguration($configuration, ['credentials' => $config]);
};
$container['varios'] = function ($c) {
return new Varios($c['main-logger']);
};
......@@ -198,6 +206,7 @@ class Factory
$configuraciones = array(
WorkerConfiguracion::WORKER_INDEX => $c['worker-config'],
WorkerConfiguracion::SERVICES_INDEX => $c['services-config'],
WorkerConfiguracion::CREDENTIAL_INDEX => $c['credentials-config'],
);
return new WorkerConfiguracion($configuraciones);
......
......@@ -31,14 +31,20 @@ class ChangeStatusRegistroProcessor implements Processor
*/
private $client;
const API_VERSION = 'v1';
private $workerConfig;
/**
* SendMailProcessor constructor.
* @param LoggerInterface|null $logger
* @param Client $client
* @param $workerConfig
*/
public function __construct(LoggerInterface $logger = null, Client $client)
public function __construct(LoggerInterface $logger = null, Client $client, $workerConfig)
{
$this->client = $client;
$this->logger = $logger;
$this->workerConfig = $workerConfig;
}
/**
......@@ -50,16 +56,19 @@ class ChangeStatusRegistroProcessor implements Processor
public function process(Message $message, Context $context)
{
$params = json_decode($message->getBody(), true);
$version = self::API_VERSION;
if (is_array($params)) {
try {
$user = getenv('API_USER');
$pass = getenv('API_PASS');
$user = $this->workerConfig->getUserApiTupaBasic();
$pass = $this->workerConfig->getPassApiTupaBasic();
$url = $this->workerConfig->getUrlApiTupaBasic();
$uri = "{$url}{$version}/registros/{$params['identificador']}";
if ($params['estado'] == Registro::ESTADO_SOLICITUD_ERROR) {
$uri = getenv('API_URL') . '/registros/' . $params['identificador'] . '/errorsolicitud';
$uri .= "/errorsolicitud";
} else {
$uri = getenv('API_URL') . '/registros/' . $params['identificador'] . '/errorregistro';
$uri .= "/errorregistro";
}
$this->client->request('PUT', $uri, ['body' => json_encode(self::OPERADOR_PORTAL), 'auth' => [$user, $pass]]);
......
......@@ -23,6 +23,4 @@ WORKER_QUEUE_MAIL_RETRASO=2000
WORKER_QUEUE_MAIL_DRY_RUN=0
##### CONFIG API #####
API_URL=http://localhost:9002/api/v1
API_USER=admin
API_PASS=admin
\ No newline at end of file
CREDENCIALES_API_BASIC_TUPA=[["tupausr","tupapass","http://tupa-api-backend/api-url/"]]
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment