refactor
- add documentation for EF API calling implementation - greater adherence to standards - better DI logic
This commit is contained in:
+20
-6
@@ -15,26 +15,40 @@ use Services\ExternalApiService;
|
||||
|
||||
$container = new Container();
|
||||
|
||||
$config = new Config();
|
||||
$container->singleton(Config::class, function() use ($config) {
|
||||
return $config;
|
||||
});
|
||||
|
||||
$container->singleton(\Core\HttpClient::class, function() {
|
||||
return new \Core\HttpClient();
|
||||
});
|
||||
|
||||
// Rate limiter driver configurabile via config or env: 'file' or 'memory'
|
||||
$rlDriver = Config::get('rate_limiter_driver', 'file');
|
||||
$rlDriver = $config->get('rate_limiter_driver', 'file');
|
||||
|
||||
if ($rlDriver === 'memory') {
|
||||
$container->singleton(RateLimiterInterface::class, function($c) {
|
||||
$requests = (int) \Core\Config::get('rate_limit_requests', 100);
|
||||
$window = (int) \Core\Config::get('rate_limit_window_seconds', 60);
|
||||
$config = $c->make(Config::class);
|
||||
$requests = (int) $config->get('rate_limit_requests', 100);
|
||||
$window = (int) $config->get('rate_limit_window_seconds', 60);
|
||||
return new InMemoryRateLimiter($requests, $window);
|
||||
});
|
||||
} else {
|
||||
$container->singleton(RateLimiterInterface::class, function($c) {
|
||||
$dir = Config::get('rate_limit_storage_dir', sys_get_temp_dir() . '/api_rate_limit');
|
||||
return new FileRateLimiter($dir);
|
||||
$config = $c->make(Config::class);
|
||||
$dir = $config->get('rate_limit_storage_dir', sys_get_temp_dir() . '/api_rate_limit');
|
||||
$requests = (int) $config->get('rate_limit_requests', 100);
|
||||
$window = (int) $config->get('rate_limit_window_seconds', 60);
|
||||
return new FileRateLimiter($dir, $requests, $window);
|
||||
});
|
||||
}
|
||||
|
||||
// Logger binding as PSR LoggerInterface
|
||||
$container->singleton(LoggerInterface::class, function($c) {
|
||||
$config = $c->make(Config::class);
|
||||
// LoggerFactory::create returns a Monolog\Logger instance
|
||||
return LoggerFactory::create(Config::get('log_ident', 'api'));
|
||||
return LoggerFactory::create($config->get('log_ident', 'api'));
|
||||
});
|
||||
|
||||
// External API service binding
|
||||
|
||||
Reference in New Issue
Block a user