]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/container/ContainerBuilder.php
Add a setting to retrieve bookmark metadata asynchrounously
[github/shaarli/Shaarli.git] / application / container / ContainerBuilder.php
index bfe93501c1ccd831a655dbb0e9540a525ab25fef..fd94a1c33ac1facfaf80e1961399155eefe6fa6a 100644 (file)
@@ -4,13 +4,17 @@ declare(strict_types=1);
 
 namespace Shaarli\Container;
 
+use malkusch\lock\mutex\FlockMutex;
 use Shaarli\Bookmark\BookmarkFileService;
 use Shaarli\Bookmark\BookmarkServiceInterface;
 use Shaarli\Config\ConfigManager;
 use Shaarli\Feed\FeedBuilder;
 use Shaarli\Formatter\FormatterFactory;
+use Shaarli\Front\Controller\Visitor\ErrorController;
+use Shaarli\Front\Controller\Visitor\ErrorNotFoundController;
 use Shaarli\History;
 use Shaarli\Http\HttpAccess;
+use Shaarli\Http\MetadataRetriever;
 use Shaarli\Netscape\NetscapeBookmarkUtils;
 use Shaarli\Plugin\PluginManager;
 use Shaarli\Render\PageBuilder;
@@ -82,10 +86,15 @@ class ContainerBuilder
             return new BookmarkFileService(
                 $container->conf,
                 $container->history,
+                new FlockMutex(fopen(SHAARLI_MUTEX_FILE, 'r'), 2),
                 $container->loginManager->isLoggedIn()
             );
         };
 
+        $container['metadataRetriever'] = function (ShaarliContainer $container): MetadataRetriever {
+            return new MetadataRetriever($container->conf, $container->httpAccess);
+        };
+
         $container['pageBuilder'] = function (ShaarliContainer $container): PageBuilder {
             return new PageBuilder(
                 $container->conf,
@@ -105,7 +114,10 @@ class ContainerBuilder
         };
 
         $container['formatterFactory'] = function (ShaarliContainer $container): FormatterFactory {
-            return new FormatterFactory($container->conf, $container->loginManager->isLoggedIn());
+            return new FormatterFactory(
+                $container->conf,
+                $container->loginManager->isLoggedIn()
+            );
         };
 
         $container['pageCacheManager'] = function (ShaarliContainer $container): PageCacheManager {
@@ -145,6 +157,16 @@ class ContainerBuilder
             );
         };
 
+        $container['notFoundHandler'] = function (ShaarliContainer $container): ErrorNotFoundController {
+            return new ErrorNotFoundController($container);
+        };
+        $container['errorHandler'] = function (ShaarliContainer $container): ErrorController {
+            return new ErrorController($container);
+        };
+        $container['phpErrorHandler'] = function (ShaarliContainer $container): ErrorController {
+            return new ErrorController($container);
+        };
+
         return $container;
     }
 }