Files
weather/app/dependencies.php
Oh a0d4bf6f91
Some checks failed
Tests / Tests PHP 7.4 (push) Has been cancelled
Tests / Tests PHP 8 (push) Has been cancelled
Tests / Tests PHP 8.1 (push) Has been cancelled
Get geographical weather data by city name or cordinates
2025-09-04 11:52:12 +02:00

50 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
use App\Application\Settings\SettingsInterface;
use App\Service\OpenWeatherClient;
use GuzzleHttp\Client;
use DI\ContainerBuilder;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Monolog\Processor\UidProcessor;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
return function (ContainerBuilder $containerBuilder) {
$containerBuilder->addDefinitions([
LoggerInterface::class => function (ContainerInterface $c) {
$settings = $c->get(SettingsInterface::class);
$loggerSettings = $settings->get('logger');
$logger = new Logger($loggerSettings['name']);
$processor = new UidProcessor();
$logger->pushProcessor($processor);
$handler = new StreamHandler($loggerSettings['path'], $loggerSettings['level']);
$logger->pushHandler($handler);
return $logger;
},
Client::class => function () {
return new Client([
'headers' => [
'Accept' => 'application/json',
'User-Agent' => 'Slim-Weather/1.0',
],
]);
},
OpenWeatherClient::class => function (ContainerInterface $c) {
$apiKey = getenv('OPENWEATHER_API_KEY') ?: '';
if ($apiKey === '') {
throw new \RuntimeException('OPENWEATHER_API_KEY is not configured');
}
return new OpenWeatherClient($c->get(Client::class), $apiKey);
},
]);
};