Skip to content

Commit 3749894

Browse files
committed
floflax
1 parent 3c8fde9 commit 3749894

File tree

8 files changed

+34
-20
lines changed

8 files changed

+34
-20
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Composer\InstalledVersions;
1515
use Http\Client\HttpAsyncClient;
1616
use Http\Client\HttpClient;
17+
use Symfony\Component\Routing\StaticSiteGeneration\ParamsProviderInterface;
1718
use phpDocumentor\Reflection\DocBlockFactoryInterface;
1819
use phpDocumentor\Reflection\Types\ContextFactory;
1920
use PhpParser\Parser;
@@ -1247,6 +1248,9 @@ private function registerRouterConfiguration(array $config, ContainerBuilder $co
12471248
$container->getDefinition('router.request_context')
12481249
->replaceArgument(0, $config['default_uri']);
12491250
}
1251+
1252+
$container->registerForAutoconfiguration(ParamsProviderInterface::class)
1253+
->addTag('routing.static_site.params_provider');
12501254
}
12511255

12521256
private function registerSessionConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader): void

src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,8 @@
402402

403403
->set('console.command.static_site_generation_generate', StaticSiteGenerationGenerateCommand::class)
404404
->args([
405-
service('static_pages_generator'),
406-
service('static_page_dumper'),
405+
service('static_site.pages_generator'),
406+
service('static_site.page_dumper'),
407407
])
408408
->tag('console.command')
409409
;

src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,10 @@
210210
])
211211
->public()
212212

213-
->set('routing.static_uri_provider', StaticUrisProvider::class)
213+
->set('routing.static_site.uri_provider', StaticUrisProvider::class)
214214
->args([
215-
service('router')
215+
service('router'),
216+
tagged_locator('routing.static_site.params_provider'),
216217
])
217218
;
218219
};

src/Symfony/Bundle/FrameworkBundle/Resources/config/web.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,16 @@
148148
->set('controller.cache_attribute_listener', CacheAttributeListener::class)
149149
->tag('kernel.event_subscriber')
150150

151-
->set('static_pages_generator', StaticPagesGenerator::class)
151+
->set('static_site.pages_generator', StaticPagesGenerator::class)
152152
->args([
153153
service('http_kernel'),
154-
service('routing.static_uri_provider'),
154+
service('routing.static_site.uri_provider'),
155155
])
156156

157-
->set('static_page_dumper', FilesystemStaticPageDumper::class)
157+
->set('static_site.page_dumper', FilesystemStaticPageDumper::class)
158158
->args([
159159
param('kernel.project_dir'),
160160
])
161-
->alias(StaticPageDumperInterface::class, 'static_page_dumper')
161+
->alias(StaticPageDumperInterface::class, 'static_static.page_dumper')
162162
;
163163
};

src/Symfony/Component/HttpKernel/StaticSiteGeneration/FilesystemStaticPageDumper.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ public function dump(string $uri, string $content): void
2828
// @todo pas de .. dans $uri
2929

3030
$staticPagesDirectory = sprintf('%s/static-pages', $this->getPublicDirectory());
31-
$path = sprintf('%s.html', rtrim($uri, '.html'));
3231

33-
$this->filesystem->dumpFile(sprintf('%s/%s', $staticPagesDirectory, $path), $content);
32+
$this->filesystem->dumpFile(sprintf('%s/%s', $staticPagesDirectory, $uri), $content);
3433
}
3534

3635
private function getPublicDirectory(): string

src/Symfony/Component/HttpKernel/StaticSiteGeneration/StaticPagesGenerator.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Component\HttpKernel\StaticSiteGeneration;
1313

1414
// @todo dependency compsoer.json symfony/filesystem
15-
use Symfony\Component\Filesystem\Filesystem;
1615
use Symfony\Component\HttpFoundation\Request;
1716
use Symfony\Component\HttpFoundation\Response;
1817
use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -37,8 +36,6 @@ public function __construct(
3736
*/
3837
public function generate(?string $filterPattern = null): iterable
3938
{
40-
$fs = new Filesystem();
41-
4239
foreach ($this->staticUrisProvider->provide() as $uri) {
4340
if (null !== $filterPattern && !preg_match($filterPattern, $uri)) {
4441
continue;
@@ -56,8 +53,9 @@ public function generate(?string $filterPattern = null): iterable
5653
// @todo throws
5754
}
5855

59-
if (false === strpos('text/html', $response->headers->get('Content-Type'))) {
60-
// @todo throws
56+
$format = $request->getFormat($response->headers->get('Content-Type')) ?? '';
57+
if (!str_ends_with($uri, '.' . $format)) {
58+
$uri = sprintf('%s.%s', $uri, $format);
6159
}
6260

6361
yield $uri => $response->getContent();

src/Symfony/Component/Routing/Loader/Configurator/Traits/RouteTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ final public function stateless(bool $stateless = true): static
173173
/**
174174
* @param bool|array{params?: string|iterable<array<mixed>>} $staticGeneration
175175
*/
176-
final public function staticGeneration(bool|array $staticGeneration): static
176+
final public function staticGeneration(bool|array $staticGeneration = true): static
177177
{
178178
$this->route->addDefaults(['_static_generation' => $staticGeneration]);
179179

src/Symfony/Component/Routing/StaticSiteGeneration/StaticUrisProvider.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111

1212
namespace Symfony\Component\Routing\StaticSiteGeneration;
1313

14+
use Psr\Container\ContainerInterface;
1415
use Symfony\Component\HttpFoundation\Request;
16+
use Symfony\Component\Routing\Exception\InvalidArgumentException;
1517
use Symfony\Component\Routing\RouterInterface;
1618

17-
1819
/**
1920
* @author Thomas Bibaut
2021
* @author Mathias Arlaud <[email protected]>
@@ -24,6 +25,7 @@
2425
{
2526
public function __construct(
2627
private RouterInterface $router,
28+
private ContainerInterface $paramsProviders,
2729
) {
2830
}
2931

@@ -74,9 +76,9 @@ public function provide(): iterable
7476
/**
7577
* @param true|string|array{params: list<array<string, mixed>>} $config
7678
*
77-
* @return list<array<string, mixed>>
79+
* @return iterable<array<string, mixed>>
7880
*/
79-
private function getParamsList(array $config): array
81+
private function getParamsList(array $config): iterable
8082
{
8183
if (true === $config) {
8284
return [];
@@ -88,7 +90,17 @@ private function getParamsList(array $config): array
8890

8991
$paramsList = $config['params'];
9092
if (is_string($paramsList)) {
91-
// @todo locator
93+
$serviceId = $paramsList;
94+
if (!$this->paramsProviders->has($serviceId)) {
95+
throw new InvalidArgumentException(\sprintf('You have requested a non-existent params provider service "%s". Did you implement "%s"?', $serviceId, ParamsProviderInterface::class));
96+
}
97+
98+
$paramsProvider = $this->paramsProviders->get($serviceId);
99+
if (!$paramsProvider instanceof ParamsProviderInterface) {
100+
throw new InvalidArgumentException(\sprintf('The "%s" params provider service does not implement "%s".', $serviceId, ParamsProviderInterface::class));
101+
}
102+
103+
return $paramsProvider->provideParams();
92104
}
93105

94106
return $paramsList;

0 commit comments

Comments
 (0)