ImageManagerServiceProvider::configureManager()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 12
rs 9.4285
cc 2
eloc 6
nc 2
nop 3
1
<?php namespace Nord\Lumen\ImageManager;
2
3
use Illuminate\Contracts\Config\Repository as ConfigRepository;
4
use Illuminate\Contracts\Container\Container;
5
use Illuminate\Support\ServiceProvider;
6
use Nord\Lumen\FileManager\Contracts\FileManager;
7
use Nord\Lumen\ImageManager\Contracts\ImageManager as ImageManagerContract;
8
use Nord\Lumen\ImageManager\Contracts\ImageFactory as ImageFactoryContract;
9
use Nord\Lumen\ImageManager\Contracts\ImageStorage as ImageStorageContract;
10
use Nord\Lumen\ImageManager\Facades\ImageManager as ImageManagerFacade;
11
use Nord\Lumen\ImageManager\Adapters\Cloudinary\CloudinaryAdapter;
12
13
class ImageManagerServiceProvider extends ServiceProvider
14
{
15
    private static $defaultAdapters = [
16
        ['class' => CloudinaryAdapter::class],
17
    ];
18
19
20
    /**
21
     * @inheritdoc
22
     */
23
    public function register()
24
    {
25
        $this->registerContainerBindings($this->app, $this->app['config']);
26
        $this->registerFacades();
27
    }
28
29
30
    /**
31
     * @param Container        $container
32
     * @param ConfigRepository $config
33
     */
34
    protected function registerContainerBindings(Container $container, ConfigRepository $config)
35
    {
36
        $container->alias(ImageManager::class, ImageManagerContract::class);
37
38
        $container->singleton(ImageManagerContract::class, function () use ($container, $config) {
39
            return $this->createManager($container, $config);
40
        });
41
    }
42
43
44
    /**
45
     *
46
     */
47
    protected function registerFacades()
48
    {
49
        class_alias(ImageManagerFacade::class, 'ImageManager');
50
    }
51
52
53
    /**
54
     * @param Container        $container
55
     * @param ConfigRepository $config
56
     */
57
    protected function createManager(Container $container, ConfigRepository $config)
58
    {
59
        $fileManager = $container->make(FileManager::class);
60
61
        $imageManager = new ImageManager($fileManager);
62
63
        $this->configureManager($imageManager, $container, $config->get('imagemanager', []));
64
65
        return $imageManager;
66
    }
67
68
69
    /**
70
     * @param ImageManager $imageManager
71
     * @param Container    $container
72
     * @param array        $config
73
     */
74
    protected function configureManager(ImageManager $imageManager, Container $container, array $config)
75
    {
76
        $adapterConfigs = array_merge(array_get($config, 'adapters', []), self::$defaultAdapters);
77
78
        foreach ($adapterConfigs as $adapterConfig) {
79
            $className = array_pull($adapterConfig, 'class');
80
81
            $adapter = $container->make($className, ['config' => $adapterConfig]);
82
83
            $imageManager->addAdapter($adapter);
84
        }
85
    }
86
}
87