OpenXE/classes/Modules/Ebay/Bootstrap.php
2021-05-21 08:49:41 +02:00

126 lines
3.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Xentral\Modules\Ebay;
use ApplicationCore;
use GuzzleHttp\Client;
use Xentral\Core\DependencyInjection\ContainerInterface;
use Xentral\Modules\Ebay\Client\EbayRestApiClient;
use Xentral\Modules\Ebay\Gateway\EbayListingGateway;
use Xentral\Modules\Ebay\Gateway\EbayRestApiGateway;
use Xentral\Modules\Ebay\Module\EbayRestApiModule;
use Xentral\Modules\Ebay\Service\EbayListingService;
use Xentral\Modules\Ebay\Service\EbayListingXmlSerializer;
use Xentral\Modules\Ebay\Service\EbayRestApiService;
use Xentral\Modules\Ebay\Service\EbayStockLoggingService;
use Xentral\Modules\Ebay\Wrapper\StockCalculationWrapper;
final class Bootstrap
{
/**
* @return array
*/
public static function registerServices(): array
{
return [
'EbayListingGateway' => 'onInitEbayListingGateway',
'EbayListingService' => 'onInitEbayListingService',
'EbayRestApiModule' => 'onInitEbayRestApiModule',
'EbayStockLoggingService' => 'onInitEbayStockLoggingService',
'EbayRestApiGateway' => 'onInitEbayRestApiGateway',
];
}
/**
* @param ContainerInterface $container
*
* @return EbayListingService
*/
public static function onInitEbayListingService(ContainerInterface $container): EbayListingService
{
return new EbayListingService(
$container->get('EbayListingGateway'),
$container->get('Database'),
new EbayListingXmlSerializer(),
self::onInitStockCalculationWrapper($container)
);
}
/**
* @param ContainerInterface $container
*
* @return StockCalculationWrapper
*/
private static function onInitStockCalculationWrapper(ContainerInterface $container): StockCalculationWrapper
{
/** @var ApplicationCore $app */
$app = $container->get('LegacyApplication');
return new StockCalculationWrapper($app->erp, $container->get('Database'));
}
/**
* @param ContainerInterface $container
*
* @return EbayStockLoggingService
*/
public static function onInitEbayStockLoggingService(ContainerInterface $container): EbayStockLoggingService
{
return new EbayStockLoggingService($container->get('Database'));
}
/**
* @param ContainerInterface $container
*
* @return EbayListingGateway
*/
public static function onInitEbayListingGateway(ContainerInterface $container): EbayListingGateway
{
return new EbayListingGateway($container->get('Database'));
}
/**
* @param ContainerInterface $container
*
* @return EbayRestApiModule
*/
public static function onInitEbayRestApiModule(ContainerInterface $container): EbayRestApiModule
{
return new EbayRestApiModule(
self::onInitEbayRestApiClient(),
self::onInitEbayRestApiGateway($container),
self::onInitEbayRestApiService($container)
);
}
/**
* @param ContainerInterface $container
*
* @return EbayRestApiGateway
*/
public static function onInitEbayRestApiGateway(ContainerInterface $container): EbayRestApiGateway
{
return new EbayRestApiGateway($container->get('Database'));
}
/**
* @return EbayRestApiClient
*/
private static function onInitEbayRestApiClient(): EbayRestApiClient
{
return new EbayRestApiClient(new Client());
}
/**
* @param ContainerInterface $container
*
* @return EbayRestApiService
*/
private static function onInitEbayRestApiService(ContainerInterface $container): EbayRestApiService
{
return new EbayRestApiService($container->get('Database'));
}
}