Mas logs y middlewares en Guzzle

This commit is contained in:
Juan Pablo Vial
2025-06-06 17:11:22 -04:00
parent 2a442417ce
commit d601d7d719
4 changed files with 27 additions and 7 deletions

View File

@ -19,15 +19,25 @@ return [
$container->get('API_PASSWORD')
);
},
Psr\Http\Client\ClientInterface::class => function(ContainerInterface $container) {
GuzzleHttp\HandlerStack::class => function(ContainerInterface $container) {
$stack = new GuzzleHttp\HandlerStack();
$stack->setHandler($container->get(GuzzleHttp\Handler\CurlHandler::class));
$stack->push(GuzzleHttp\Middleware::mapRequest(function(Psr\Http\Message\RequestInterface $request) use ($container) {
$login = $container->get(Incoviba\Service\Login::class);
return $request->withHeader('Authorization', "Bearer {$login->getKey($container->get('API_KEY'))}");
}));
$stack->push(GuzzleHttp\Middleware::mapRequest(function(Psr\Http\Message\RequestInterface $request) use ($container) {
if (!$request->hasHeader('Authorization')) {
return false;
}
return $request;
}));
return $stack;
},
Psr\Http\Client\ClientInterface::class => function(ContainerInterface $container) {
return new GuzzleHttp\Client([
'base_uri' => $container->get('API_URL'),
'headers' => [
'Authorization' => [
"Bearer {$login->getKey($container->get('API_KEY'))}"
]
]
'handler' => $container->get(GuzzleHttp\HandlerStack::class),
]);
}
];

View File

@ -29,6 +29,7 @@ class BaseLoop extends Console\Command\Command
$this->waitNextTimeout($output);
$this->logger->info("Starting loop...");
$this->write($output, 'Starting loop...');
while (true) {
$commands = $this->scheduleService->getPending();

View File

@ -33,6 +33,7 @@ class Queue extends Command
$jobs = $this->getJobs($output);
if (count($jobs) === 0) {
$this->logger->debug("No jobs to run");
return Console\Command\Command::SUCCESS;
}
@ -50,6 +51,7 @@ class Queue extends Command
$errors = 0;
foreach ($jobs as $job) {
if ($this->runJob($output, $job) === Console\Command\Command::FAILURE) {
$this->logger->error("Error running job: {$job}");
$errors ++;
}
}

View File

@ -14,6 +14,7 @@ class Login
public function login(): string
{
$this->logger->info('Logging in');
$url = '/api/login';
try {
$response = $this->client->request('POST', $url, [
@ -39,13 +40,19 @@ class Login
]);
return '';
}
$this->logger->info('Logged in');
$body = $response->getBody()->getContents();
$data = json_decode($body, true);
if (!key_exists('token', $data)) {
$this->logger->error('Token not found');
return '';
}
file_put_contents($this->tokenFilename, $data['token']);
$result = file_put_contents($this->tokenFilename, $data['token']);
if ($result === false) {
$this->logger->error('Failed to save token');
return '';
}
return $data['token'];
}