mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-16 13:07:14 +01:00
119 lines
3.8 KiB
PHP
119 lines
3.8 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Xentral\Modules\GoogleApi;
|
||
|
|
||
|
use ApplicationCore;
|
||
|
use Xentral\Components\Http\Request;
|
||
|
use Xentral\Components\HttpClient\HttpClientFactory;
|
||
|
use Xentral\Core\DependencyInjection\ContainerInterface;
|
||
|
use Xentral\Modules\GoogleApi\Client\GoogleApiClientFactory;
|
||
|
use Xentral\Modules\GoogleApi\Service\GoogleAccountGateway;
|
||
|
use Xentral\Modules\GoogleApi\Service\GoogleAccountService;
|
||
|
use Xentral\Modules\GoogleApi\Service\GoogleAuthorizationService;
|
||
|
use Xentral\Modules\GoogleApi\Service\GoogleCredentialsService;
|
||
|
use Xentral\Modules\GoogleApi\Wrapper\CompanyConfigWrapper;
|
||
|
|
||
|
final class Bootstrap
|
||
|
{
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function registerServices(): array
|
||
|
{
|
||
|
return [
|
||
|
'GoogleCredentialsService' => 'onInitGoogleCredentialsService',
|
||
|
'GoogleAccountGateway' => 'onInitGoogleAccountGateway',
|
||
|
'GoogleAccountService' => 'onInitGoogleAccountService',
|
||
|
'GoogleAuthorizationService' => 'onInitGoogleAuthorizationService',
|
||
|
'GoogleApiClientFactory' => 'onInitGoogleApiClientFactory',
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ContainerInterface $container
|
||
|
*
|
||
|
* @return GoogleCredentialsService
|
||
|
*/
|
||
|
public static function onInitGoogleCredentialsService(ContainerInterface $container): GoogleCredentialsService
|
||
|
{
|
||
|
return new GoogleCredentialsService(
|
||
|
self::onInitCompanyConfigWrapper($container)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ContainerInterface $container
|
||
|
*
|
||
|
* @return GoogleAccountGateway
|
||
|
*/
|
||
|
public static function onInitGoogleAccountGateway(ContainerInterface $container): GoogleAccountGateway
|
||
|
{
|
||
|
return new GoogleAccountGateway($container->get('Database'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ContainerInterface $container
|
||
|
*
|
||
|
* @return GoogleAccountService
|
||
|
*/
|
||
|
public static function onInitGoogleAccountService(ContainerInterface $container): GoogleAccountService
|
||
|
{
|
||
|
return new GoogleAccountService(
|
||
|
$container->get('GoogleAccountGateway'),
|
||
|
$container->get('Database')
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ContainerInterface $container
|
||
|
*
|
||
|
* @return GoogleAuthorizationService
|
||
|
*/
|
||
|
public static function onInitGoogleAuthorizationService(ContainerInterface $container): GoogleAuthorizationService
|
||
|
{
|
||
|
/** @var GoogleCredentialsService $credentialService */
|
||
|
$credentialService = $container->get('GoogleCredentialsService');
|
||
|
/** @var Request $request */
|
||
|
$request = $container->get('Request');
|
||
|
/** @var HttpClientFactory $clientFactory */
|
||
|
$clientFactory = $container->get('HttpClientFactory');
|
||
|
$httpClient = $clientFactory->createClient();
|
||
|
return new GoogleAuthorizationService(
|
||
|
$container->get('GoogleAccountGateway'),
|
||
|
$container->get('GoogleAccountService'),
|
||
|
$httpClient,
|
||
|
$credentialService->getCredentials(),
|
||
|
$request->getBaseUrl()
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ContainerInterface $container
|
||
|
*
|
||
|
* @return GoogleApiClientFactory
|
||
|
*/
|
||
|
public static function onInitGoogleApiClientFactory(ContainerInterface $container): GoogleApiClientFactory
|
||
|
{
|
||
|
return new GoogleApiClientFactory(
|
||
|
$container->get('GoogleAccountGateway'),
|
||
|
$container->get('GoogleAuthorizationService'),
|
||
|
$container->get('HttpClientFactory')
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ContainerInterface $container
|
||
|
*
|
||
|
* @return CompanyConfigWrapper
|
||
|
*/
|
||
|
private static function onInitCompanyConfigWrapper(ContainerInterface $container): CompanyConfigWrapper
|
||
|
{
|
||
|
/** @var ApplicationCore $app */
|
||
|
$app = $container->get('LegacyApplication');
|
||
|
|
||
|
return new CompanyConfigWrapper($app->erp);
|
||
|
}
|
||
|
}
|