Skip to content

Commit

Permalink
Merge branch 'refs/heads/6.x' into feature/MTCE-226-Monorepo-v6-refac…
Browse files Browse the repository at this point in the history
…toring-EasyEventDispatcher

# Conflicts:
#	packages/EasyHttpClient/composer.json
#	packages/EasyHttpClient/laravel/EasyHttpClientServiceProvider.php
#	packages/EasyHttpClient/src/Common/HttpClient/WithEventsHttpClient.php
#	packages/EasyHttpClient/tests/Application/src/Common/HttpClient/WithEventsHttpClientTest.php
#	packages/EasyHttpClient/tests/Fixture/app/config/bundles.php
#	packages/EasyHttpClient/tests/Fixture/app/config/services.php
#	packages/EasyHttpClient/tests/Unit/laravel/EasyHttpClientServiceProviderTest.php
  • Loading branch information
alexndlm committed Jun 24, 2024
2 parents f4e3ee2 + d065042 commit 4925e4d
Show file tree
Hide file tree
Showing 57 changed files with 308 additions and 248 deletions.
8 changes: 7 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@
"EonX\\EasyEventDispatcher\\Bundle\\": "packages/EasyEventDispatcher/bundle",
"EonX\\EasyEventDispatcher\\Laravel\\": "packages/EasyEventDispatcher/laravel",
"EonX\\EasyHttpClient\\": "packages/EasyHttpClient/src",
"EonX\\EasyHttpClient\\Bundle\\": "packages/EasyHttpClient/bundle",
"EonX\\EasyHttpClient\\Laravel\\": "packages/EasyHttpClient/laravel",
"EonX\\EasyLock\\": "packages/EasyLock/src",
"EonX\\EasyLogging\\": "packages/EasyLogging/src",
"EonX\\EasyMonorepo\\": "monorepo",
Expand Down Expand Up @@ -159,7 +161,11 @@
"EonX\\EasyEventDispatcher\\Tests\\Unit\\Bundle\\": "packages/EasyEventDispatcher/tests/Unit/bundle",
"EonX\\EasyEventDispatcher\\Tests\\Unit\\Laravel\\": "packages/EasyEventDispatcher/tests/Unit/laravel",
"EonX\\EasyHttpClient\\Tests\\": "packages/EasyHttpClient/tests",
"EonX\\EasyHttpClient\\Tests\\Bridge\\Symfony\\Fixtures\\App\\": "packages/EasyHttpClient/tests/Bridge/Symfony/Fixtures/app/src",
"EonX\\EasyHttpClient\\Tests\\Application\\": "packages/EasyHttpClient/tests/Application/src",
"EonX\\EasyHttpClient\\Tests\\Application\\Bundle\\": "packages/EasyHttpClient/tests/Application/bundle",
"EonX\\EasyHttpClient\\Tests\\Fixture\\App\\": "packages/EasyHttpClient/tests/Fixture/app/src",
"EonX\\EasyHttpClient\\Tests\\Unit\\": "packages/EasyHttpClient/tests/Unit/src",
"EonX\\EasyHttpClient\\Tests\\Unit\\Laravel\\": "packages/EasyHttpClient/tests/Unit/laravel",
"EonX\\EasyLock\\Tests\\": "packages/EasyLock/tests",
"EonX\\EasyLogging\\Tests\\": "packages/EasyLogging/tests",
"EonX\\EasyNotification\\Tests\\": "packages/EasyNotification/tests",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler;
namespace EonX\EasyHttpClient\Bundle\CompilerPass;

use EonX\EasyHttpClient\Implementations\Symfony\WithEventsHttpClient;
use EonX\EasyHttpClient\Common\HttpClient\WithEventsHttpClient;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler;
namespace EonX\EasyHttpClient\Bundle\CompilerPass;

use EonX\EasyHttpClient\Bridge\BridgeConstantsInterface;
use EonX\EasyHttpClient\Bundle\Enum\ConfigParam;
use Symfony\Component\DependencyInjection\ContainerBuilder;

final class DecorateDefaultClientPass extends AbstractEasyHttpClientCompilerPass
final class DecorateDefaultClientCompilerPass extends AbstractEasyHttpClientCompilerPass
{
private const DECORATION_SERVICE_ID = 'easy_http_client.decorate_default';

Expand All @@ -21,6 +21,6 @@ protected function doProcess(ContainerBuilder $container): void

protected function getEnableParamName(): string
{
return BridgeConstantsInterface::PARAM_DECORATE_DEFAULT_CLIENT;
return ConfigParam::DecorateDefaultClient->value;
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler;
namespace EonX\EasyHttpClient\Bundle\CompilerPass;

use EonX\EasyHttpClient\Bridge\BridgeConstantsInterface;
use EonX\EasyHttpClient\Bundle\Enum\ConfigParam;
use EonX\EasyWebhook\Bridge\BridgeConstantsInterface as EasyWebhookBridgeConstantsInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

final class DecorateEasyWebhookClientPass extends AbstractEasyHttpClientCompilerPass
final class DecorateEasyWebhookClientCompilerPass extends AbstractEasyHttpClientCompilerPass
{
private const DECORATION_SERVICE_ID = 'easy_http_client.decorate_easy_webhook';

Expand All @@ -28,6 +28,6 @@ protected function doProcess(ContainerBuilder $container): void

protected function getEnableParamName(): string
{
return BridgeConstantsInterface::PARAM_DECORATE_EASY_WEBHOOK_CLIENT;
return ConfigParam::DecorateEasyWebhookClient->value;
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler;
namespace EonX\EasyHttpClient\Bundle\CompilerPass;

use EonX\EasyHttpClient\Bridge\BridgeConstantsInterface;
use EonX\EasyHttpClient\Bridge\Symfony\Messenger\AmazonSqsTransportFactory;
use EonX\EasyHttpClient\Bundle\Enum\ConfigParam;
use EonX\EasyHttpClient\Messenger\Factory\AmazonSqsTransportFactory;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsTransportFactory as BaseAmazonSqsTransportFactory;

final class DecorateMessengerSqsClientPass extends AbstractEasyHttpClientCompilerPass
final class DecorateMessengerSqsClientCompilerPass extends AbstractEasyHttpClientCompilerPass
{
private const MESSENGER_SQS_FACTORY = 'messenger.transport.sqs.factory';

Expand All @@ -37,6 +37,6 @@ protected function doProcess(ContainerBuilder $container): void

protected function getEnableParamName(): string
{
return BridgeConstantsInterface::PARAM_DECORATE_MESSENGER_SQS_CLIENT;
return ConfigParam::DecorateMessengerSqsClient->value;
}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bridge\Symfony;
namespace EonX\EasyHttpClient\Bundle;

use Bugsnag\Client;
use EonX\EasyHttpClient\Bridge\BridgeConstantsInterface;
use EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler\DecorateDefaultClientPass;
use EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler\DecorateEasyWebhookClientPass;
use EonX\EasyHttpClient\Bridge\Symfony\DependencyInjection\Compiler\DecorateMessengerSqsClientPass;
use EonX\EasyHttpClient\Interfaces\RequestDataModifierInterface;
use EonX\EasyHttpClient\Bundle\CompilerPass\DecorateDefaultClientCompilerPass;
use EonX\EasyHttpClient\Bundle\CompilerPass\DecorateEasyWebhookClientCompilerPass;
use EonX\EasyHttpClient\Bundle\CompilerPass\DecorateMessengerSqsClientCompilerPass;
use EonX\EasyHttpClient\Bundle\Enum\ConfigParam;
use EonX\EasyHttpClient\Bundle\Enum\ConfigTag;
use EonX\EasyHttpClient\Common\Modifier\RequestDataModifierInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;

final class EasyHttpClientSymfonyBundle extends AbstractBundle
final class EasyHttpClientBundle extends AbstractBundle
{
protected string $extensionAlias = 'easy_http_client';

public function __construct()
{
$this->path = \realpath(__DIR__);
Expand All @@ -27,63 +26,63 @@ public function __construct()
public function build(ContainerBuilder $container): void
{
$container
->addCompilerPass(new DecorateDefaultClientPass())
->addCompilerPass(new DecorateEasyWebhookClientPass())
->addCompilerPass(new DecorateMessengerSqsClientPass());
->addCompilerPass(new DecorateDefaultClientCompilerPass())
->addCompilerPass(new DecorateEasyWebhookClientCompilerPass())
->addCompilerPass(new DecorateMessengerSqsClientCompilerPass());
}

public function configure(DefinitionConfigurator $definition): void
{
$definition->import(__DIR__ . '/Resources/config/definition.php');
$definition->import('config/definition.php');
}

public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
{
$builder
->registerForAutoconfiguration(RequestDataModifierInterface::class)
->addTag(BridgeConstantsInterface::TAG_REQUEST_DATA_MODIFIER);
->addTag(ConfigTag::RequestDataModifier->value);

$container
->parameters()
->set(
BridgeConstantsInterface::PARAM_DECORATE_DEFAULT_CLIENT,
ConfigParam::DecorateDefaultClient->value,
$config['decorate_default_client'] ?? false
);

$container
->parameters()
->set(
BridgeConstantsInterface::PARAM_DECORATE_EASY_WEBHOOK_CLIENT,
ConfigParam::DecorateEasyWebhookClient->value,
$config['decorate_easy_webhook_client'] ?? false
);

$container
->parameters()
->set(
BridgeConstantsInterface::PARAM_DECORATE_MESSENGER_SQS_CLIENT,
ConfigParam::DecorateMessengerSqsClient->value,
$config['decorate_messenger_sqs_client'] ?? false
);

$container
->parameters()
->set(BridgeConstantsInterface::PARAM_MODIFIERS_ENABLED, $config['modifiers']['enabled'] ?? true);
->set(ConfigParam::ModifiersEnabled->value, $config['modifiers']['enabled'] ?? true);

$modifiersWhitelist = $config['modifiers']['whitelist'] ?? [null];
$container
->parameters()
->set(
BridgeConstantsInterface::PARAM_MODIFIERS_WHITELIST,
ConfigParam::ModifiersWhitelist->value,
\count($modifiersWhitelist) === 1 && ($modifiersWhitelist[0] === null) ? null : $modifiersWhitelist
);

$container->import(__DIR__ . '/Resources/config/http_client.php');
$container->import('config/http_client.php');

if (($config['easy_bugsnag_enabled'] ?? true) && \class_exists(Client::class)) {
$container->import(__DIR__ . '/Resources/config/easy_bugsnag.php');
$container->import('config/easy_bugsnag.php');
}

if (($config['psr_logger_enabled'] ?? true) && \interface_exists(LoggerInterface::class)) {
$container->import(__DIR__ . '/Resources/config/psr_logger.php');
$container->import('config/psr_logger.php');
}
}
}
9 changes: 9 additions & 0 deletions packages/EasyHttpClient/bundle/Enum/BundleParam.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bundle\Enum;

enum BundleParam: string
{
case LogChannel = 'easy_http_client';
}
17 changes: 17 additions & 0 deletions packages/EasyHttpClient/bundle/Enum/ConfigParam.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bundle\Enum;

enum ConfigParam: string
{
case DecorateDefaultClient = 'easy_http_client.decorate_default_client';

case DecorateEasyWebhookClient = 'easy_http_client.decorate_easy_webhook_client';

case DecorateMessengerSqsClient = 'easy_http_client.decorate_messenger_sqs_client';

case ModifiersEnabled = 'easy_http_client.modifiers.enabled';

case ModifiersWhitelist = 'easy_http_client.modifiers.whitelist';
}
11 changes: 11 additions & 0 deletions packages/EasyHttpClient/bundle/Enum/ConfigServiceId.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bundle\Enum;

enum ConfigServiceId: string
{
case HttpClient = 'easy_http_client.http_client';

case Logger = 'easy_http_client.logger';
}
9 changes: 9 additions & 0 deletions packages/EasyHttpClient/bundle/Enum/ConfigTag.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);

namespace EonX\EasyHttpClient\Bundle\Enum;

enum ConfigTag: string
{
case RequestDataModifier = 'easy_http_client.request_data_modifier';
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use EonX\EasyHttpClient\Bridge\EasyBugsnag\HttpRequestSentBreadcrumbListener;
use EonX\EasyHttpClient\EasyBugsnag\Listener\HttpRequestSentBreadcrumbListener;

return static function (ContainerConfigurator $container): void {
$services = $container->services();
Expand Down
22 changes: 22 additions & 0 deletions packages/EasyHttpClient/bundle/config/http_client.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use EonX\EasyHttpClient\Bundle\Enum\ConfigParam;
use EonX\EasyHttpClient\Bundle\Enum\ConfigServiceId;
use EonX\EasyHttpClient\Bundle\Enum\ConfigTag;
use EonX\EasyHttpClient\Common\HttpClient\WithEventsHttpClient;

return static function (ContainerConfigurator $container): void {
$services = $container->services();
$services->defaults()
->autoconfigure()
->autowire();

$services
->set(ConfigServiceId::HttpClient->value, WithEventsHttpClient::class)
->arg('$modifiers', tagged_iterator(ConfigTag::RequestDataModifier->value))
->arg('$modifiersEnabled', '%' . ConfigParam::ModifiersEnabled->value . '%')
->arg('$modifiersWhitelist', '%' . ConfigParam::ModifiersWhitelist->value . '%');
};
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use EonX\EasyHttpClient\Bridge\BridgeConstantsInterface;
use EonX\EasyHttpClient\Bridge\PsrLogger\LogHttpRequestSentListener;
use EonX\EasyHttpClient\Bundle\Enum\BundleParam;
use EonX\EasyHttpClient\Bundle\Enum\ConfigServiceId;
use EonX\EasyHttpClient\PsrLogger\Listener\LogHttpRequestSentListener;
use EonX\EasyLogging\Interfaces\LoggerFactoryInterface;
use Psr\Log\LoggerInterface;

Expand All @@ -17,14 +18,14 @@
$listener = $services
->set(LogHttpRequestSentListener::class)
->tag('kernel.event_listener')
->tag('monolog.logger', ['channel' => BridgeConstantsInterface::LOG_CHANNEL]);
->tag('monolog.logger', ['channel' => BundleParam::LogChannel->value]);

if (\interface_exists(LoggerFactoryInterface::class)) {
$services
->set(BridgeConstantsInterface::SERVICE_LOGGER, LoggerInterface::class)
->set(ConfigServiceId::Logger->value, LoggerInterface::class)
->factory([service(LoggerFactoryInterface::class), 'create'])
->args([BridgeConstantsInterface::LOG_CHANNEL]);
->args([BundleParam::LogChannel->value]);

$listener->arg('$logger', service(BridgeConstantsInterface::SERVICE_LOGGER));
$listener->arg('$logger', service(ConfigServiceId::Logger->value));
}
};
30 changes: 22 additions & 8 deletions packages/EasyHttpClient/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,49 @@
"php": "^8.2",
"eonx-com/easy-event-dispatcher": "^5.12",
"eonx-com/easy-utils": "^5.12",
"nesbot/carbon": "^2.67"
"nesbot/carbon": "^2.67",
"symfony/config": "^6.4",
"symfony/contracts": "^3.5",
"symfony/dependency-injection": "^6.4",
"symfony/http-client": "^6.4",
"symfony/http-kernel": "^6.4"
},
"require-dev": {
"bugsnag/bugsnag": "^3.29",
"doctrine/dbal": "^3.0",
"doctrine/orm": "^2.14",
"doctrine/doctrine-bundle": "^2.8",
"doctrine/orm": "^2.14",
"eonx-com/easy-lock": "^5.12",
"eonx-com/easy-webhook": "^5.12",
"eonx-com/easy-test": "^5.12",
"eonx-com/easy-webhook": "^5.12",
"laravel/lumen-framework": "^9.1",
"mockery/mockery": "^1.6",
"phpunit/phpunit": "^10.2",
"symfony/amazon-sqs-messenger": "^6.4",
"symfony/contracts": "^3.5",
"symfony/symfony": "^6.4"
"symfony/amazon-sqs-messenger": "^6.4"
},
"autoload": {
"psr-4": {
"EonX\\EasyHttpClient\\": "src",
"EonX\\EasyHttpClient\\Bridge\\Symfony\\": "src/Bridge/Symfony"
"EonX\\EasyHttpClient\\Bundle\\": "bundle",
"EonX\\EasyHttpClient\\Laravel\\": "laravel"
}
},
"autoload-dev": {
"psr-4": {
"EonX\\EasyHttpClient\\Tests\\": "tests",
"EonX\\EasyHttpClient\\Tests\\Bridge\\Symfony\\Fixtures\\App\\": "tests/Bridge/Symfony/Fixtures/app/src"
"EonX\\EasyHttpClient\\Tests\\Application\\": "tests/Application/src",
"EonX\\EasyHttpClient\\Tests\\Application\\Bundle\\": "tests/Application/bundle",
"EonX\\EasyHttpClient\\Tests\\Fixture\\App\\": "tests/Fixture/app/src",
"EonX\\EasyHttpClient\\Tests\\Unit\\": "tests/Unit/src",
"EonX\\EasyHttpClient\\Tests\\Unit\\Laravel\\": "tests/Unit/laravel"
}
},
"suggest": {
"bugsnag/bugsnag": "To use Bugsnag integration",
"eonx-com/easy-logging": "To log HTTP requests and responses",
"eonx-com/easy-webhook": "To use EasyWebhook integration",
"symfony/amazon-sqs-messenger": "To use Messenger Amazon SQS integration"
},
"extra": {
"branch-alias": {
"dev-master": "5.12-dev"
Expand Down
Loading

0 comments on commit 4925e4d

Please sign in to comment.