MarketplaceHttpClientFactory→HttpClientFactory(renamed)MarketplaceClient→ApiClient(renamed)- Removed context string parameter from exceptions and middleware
RetryConfig::forMarketplace()removedsymfony/http-clientremoved from dependencies —php-http/discoverytakes oversymfony/cacheremoved from dependenciespsr/cacheremoved fromrequire(no cache in Factory/Config)$cacheparameter removed fromHttpClientFactory+ClientConfig
DiscoveryHttpTransport— usesphp-http/discoveryfor PSR-18 transport (Symfony-free)Psr7HttpResponse— PSR-7 response adapter forHttpResponseInterfacephp-http/mock-clientinrequire-devfor tests
- Library is now completely Symfony-free (no Symfony in require or require-dev)
- Symfony completely removed from public API — optional internal implementation only
symfony/rate-limiterandsymfony/cacheremoved fromrequireRateLimiterFactory(Symfony) inClientConfig+ClientConfigBuilderreplaced byFour\RateLimiting\RateLimiterInterfacecreateRateLimiterFactory()inMarketplaceHttpClientFactoryremovedMiddlewareInterface::wrap()now takesHttpTransportInterfaceinstead ofSymfony\HttpClientInterfaceClientConfig::$rateLimiterFactory→$rateLimiter(type:RateLimiterInterface)ClientConfigBuilder::withRateLimitPolicy()removed — usewithRateLimit($limiter)directly
- Own
Four\Http\Transport\HttpTransportInterface— decouples middleware from Symfony stack SymfonyHttpTransport+SymfonyHttpResponse— Symfony as optional implementationTransportPsr18Adapter+TransportPsr7Response— PSR-18 bridge over transport layerfour-bytes/four-rate-limitingas dependencysymfony/http-clientinsuggest(optional default transport)
OAuth1aProvider: port null-coalescing ($parsedUrl['port'] ?? null)- Tests:
assertStringContains→assertStringContainsString(PHPUnit 11 compatibility)
- Breaking: Removed API-specific client presets
- Breaking:
HttpClientFactoryInterface::createClient()→create(), returns PSR-18ClientInterface - Breaking:
MarketplaceClientuses PSR-18 instead of SymfonyHttpClientInterface - Changed:
MarketplaceHttpClientFactoryreturns PSR-18ClientInterface - Changed: Removed API-specific factory methods
- Changed:
MarketplaceClientmigrated to PSR-7/PSR-18 - Added:
NotFoundExceptionfor HTTP 404 responses - Added:
psr/http-factory: ^1.0,php-http/discovery: ^1.19 - Fixed:
OAuth1aProvider::getExpiresAt()missing interface method - Fixed:
LoggedResponse::getInfo()return type for PHP 8.4
- Initial release