Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
204 / 204
Application
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
204 / 204
 __construct
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
190 / 190
 anonymous function
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
11 / 11
<?php
/**
 * Gallery
 *
 * This file is licensed under the Affero General Public License version 3 or
 * later. See the COPYING file.
 *
 * @author Olivier Paroz <galleryapps@oparoz.com>
 *
 * @copyright Olivier Paroz 2014-2016
 */
namespace OCA\Gallery\AppInfo;
ini_set("gd.jpeg_ignore_warning", true);
require_once __DIR__ . '/../vendor/autoload.php';
// A production environment will not have xdebug enabled and
// a development environment should have the dev packages installed
$c3 = __DIR__ . '/../c3.php';
if (extension_loaded('xdebug') && file_exists($c3)) {
    include_once $c3;
}
use OCP\IContainer;
use OCP\AppFramework\App;
use OCP\AppFramework\IAppContainer;
use OCA\Gallery\Config\ConfigParser;
use OCA\Gallery\Controller\PageController;
use OCA\Gallery\Controller\ConfigController;
use OCA\Gallery\Controller\ConfigPublicController;
use OCA\Gallery\Controller\ConfigApiController;
use OCA\Gallery\Controller\FilesController;
use OCA\Gallery\Controller\FilesPublicController;
use OCA\Gallery\Controller\FilesApiController;
use OCA\Gallery\Controller\PreviewController;
use OCA\Gallery\Controller\PreviewPublicController;
use OCA\Gallery\Controller\PreviewApiController;
use OCA\Gallery\Environment\Environment;
use OCA\Gallery\Preview\Preview;
use OCA\Gallery\Service\SearchFolderService;
use OCA\Gallery\Service\ConfigService;
use OCA\Gallery\Service\SearchMediaService;
use OCA\Gallery\Service\ThumbnailService;
use OCA\Gallery\Service\PreviewService;
use OCA\Gallery\Service\DownloadService;
use OCA\Gallery\Middleware\SharingCheckMiddleware;
use OCA\Gallery\Middleware\EnvCheckMiddleware;
use OCA\Gallery\Utility\EventSource;
use OCA\OcUtility\AppInfo\Application as OcUtility;
use OCA\OcUtility\Service\SmarterLogger as SmarterLogger;
/**
 * Class Application
 *
 * @package OCA\Gallery\AppInfo
 */
class Application extends App {
    /**
     * Constructor
     *
     * @param array $urlParams
     */
    public function __construct(array $urlParams = []) {
        parent::__construct('gallery', $urlParams);
        $container = $this->getContainer();
        /**
         * Controllers
         */
        $container->registerService(
            'PageController', function (IContainer $c) {
            return new PageController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('Environment'),
                $c->query('OCP\IURLGenerator'),
                $c->query('OCP\IConfig'),
                $c->query('Session')
            );
        }
        );
        $container->registerService(
            'ConfigController', function (IContainer $c) {
            return new ConfigController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('ConfigService'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'ConfigPublicController', function (IContainer $c) {
            return new ConfigPublicController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('ConfigService'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'ConfigApiController', function (IContainer $c) {
            return new ConfigApiController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('ConfigService'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'FilesController', function (IContainer $c) {
            return new FilesController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('OCP\IURLGenerator'),
                $c->query('SearchFolderService'),
                $c->query('ConfigService'),
                $c->query('SearchMediaService'),
                $c->query('DownloadService'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'FilesPublicController', function (IContainer $c) {
            return new FilesPublicController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('OCP\IURLGenerator'),
                $c->query('SearchFolderService'),
                $c->query('ConfigService'),
                $c->query('SearchMediaService'),
                $c->query('DownloadService'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'FilesApiController', function (IContainer $c) {
            return new FilesApiController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('OCP\IURLGenerator'),
                $c->query('SearchFolderService'),
                $c->query('ConfigService'),
                $c->query('SearchMediaService'),
                $c->query('DownloadService'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'PreviewController', function (IContainer $c) {
            return new PreviewController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('OCP\IURLGenerator'),
                $c->query('ConfigService'),
                $c->query('ThumbnailService'),
                $c->query('PreviewService'),
                $c->query('DownloadService'),
                $c->query('EventSource'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'PreviewPublicController', function (IContainer $c) {
            return new PreviewPublicController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('OCP\IURLGenerator'),
                $c->query('ConfigService'),
                $c->query('ThumbnailService'),
                $c->query('PreviewService'),
                $c->query('DownloadService'),
                $c->query('EventSource'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'PreviewApiController', function (IContainer $c) {
            return new PreviewApiController(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('OCP\IURLGenerator'),
                $c->query('ConfigService'),
                $c->query('ThumbnailService'),
                $c->query('PreviewService'),
                $c->query('DownloadService'),
                $c->query('EventSource'),
                $c->query('Logger')
            );
        }
        );
        /**
         * Core
         */
        $container->registerService(
            'EventSource', function (IAppContainer $c) {
            return new EventSource();
        }
        );
        $container->registerService(
            'Token', function (IContainer $c) {
            return $c->query('Request')
                     ->getParam('token');
        }
        );
        $container->registerService(
            'Session', function (IAppContainer $c) {
            return $c->getServer()
                     ->getSession();
        }
        );
        $container->registerService(
            'L10N', function (IAppContainer $c) {
            return $c->getServer()
                     ->getL10N('gallery'); // Keep the same translations
        }
        );
        $container->registerService(
            'UserFolder', function (IAppContainer $c) {
            return $c->getServer()
                     ->getUserFolder($c->query('UserId'));
        }
        );
        /**
         * OCA
         */
        $container->registerService(
            'ConfigParser', function () {
            return new ConfigParser();
        }
        );
        $container->registerService(
            'CustomPreviewManager', function (IContainer $c) {
            return new Preview(
                $c->query('OCP\IConfig'),
                $c->query('OCP\IPreview'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'Environment', function (IContainer $c) {
            return new Environment(
                $c->query('AppName'),
                $c->query('UserId'),
                $c->query('UserFolder'),
                $c->query('OCP\IUserManager'),
                $c->query('OCP\Files\IRootFolder'),
                $c->query('Logger')
            );
        }
        );
        /*// The same thing as above, but in OC9, hopefully. See https://github.com/owncloud/core/issues/12676
        $container->registerService(
            'Environment', function (IAppContainer $c) {
            $token = $c->query('Token');
            return $c
                ->getServer()
                ->getEnvironment($token);
        }
        );*/
        /**
         * OCA External
         */
        if (\OCP\App::isEnabled('ocutility')) {
            // @codeCoverageIgnoreStart
            $container->registerService(
                'UtilityContainer', function () {
                $app = new OcUtility();
                return $app->getContainer();
            }
            );
            $container->registerService(
                'Helper', function (IContainer $c) {
                return $c->query('UtilityContainer')
                         ->query('OCA\OcUtility\Service\Helper');
            }
            );
            $container->registerService(
                'Logger', function (IContainer $c) {
                return new SmarterLogger(
                    $c->query('AppName'),
                    $c->query('OCP\ILogger')
                );
            }
            );
        } else {
            // @codeCoverageIgnoreEnd
            $container->registerService(
                'Logger', function (IContainer $c) {
                return $c->query('OCP\ILogger');
            }
            );
        }
        /**
         * Services
         */
        $container->registerService(
            'SearchFolderService', function (IContainer $c) {
            return new SearchFolderService(
                $c->query('AppName'),
                $c->query('Environment'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'ConfigService', function (IContainer $c) {
            return new ConfigService(
                $c->query('AppName'),
                $c->query('Environment'),
                $c->query('ConfigParser'),
                $c->query('CustomPreviewManager'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'SearchMediaService', function (IContainer $c) {
            return new SearchMediaService(
                $c->query('AppName'),
                $c->query('Environment'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'ThumbnailService', function () {
            return new ThumbnailService();
        }
        );
        $container->registerService(
            'PreviewService', function (IContainer $c) {
            return new PreviewService(
                $c->query('AppName'),
                $c->query('Environment'),
                $c->query('CustomPreviewManager'),
                $c->query('Logger')
            );
        }
        );
        $container->registerService(
            'DownloadService', function (IContainer $c) {
            return new DownloadService(
                $c->query('AppName'),
                $c->query('Environment'),
                $c->query('Logger')
            );
        }
        );
        /**
         * Middleware
         */
        $container->registerService(
            'SharingCheckMiddleware',
            function (IAppContainer $c) {
                return new SharingCheckMiddleware(
                    $c->query('AppName'),
                    $c->query('Request'),
                    $c->query('OCP\IConfig'),
                    $c->query('OCP\AppFramework\Utility\IControllerMethodReflector'),
                    $c->query('OCP\IURLGenerator'),
                    $c->query('Logger')
                );
            }
        );
        $container->registerService(
            'EnvCheckMiddleware',
            function (IContainer $c) {
                return new EnvCheckMiddleware(
                    $c->query('AppName'),
                    $c->query('Request'),
                    $c->query('OCP\Security\IHasher'),
                    $c->query('Session'),
                    $c->query('Environment'),
                    $c->query('OCP\AppFramework\Utility\IControllerMethodReflector'),
                    $c->query('OCP\IURLGenerator'),
                    $c->query('OCP\Share\IManager'),
                    $c->query('Logger')
                );
            }
        );
        // Executed in the order that it is registered
        $container->registerMiddleware('SharingCheckMiddleware');
        $container->registerMiddleware('EnvCheckMiddleware');
    }
}