/** * Put your class dependencies in here * @param string $appName the name of the app */ public function __construct($appName, $urlParams = array()) { $this['AppName'] = $appName; $this['urlParams'] = $urlParams; $this->registerParameter('ServerContainer', \OC::$server); $this['API'] = $this->share(function ($c) { return new API($c['AppName']); }); /** * Http */ $this['Request'] = $this->share(function ($c) { /** @var $c SimpleContainer */ /** @var $server IServerContainer */ $server = $c->query('ServerContainer'); $server->registerParameter('urlParams', $c['urlParams']); return $server->getRequest(); }); $this['Protocol'] = $this->share(function ($c) { if (isset($_SERVER['SERVER_PROTOCOL'])) { return new Http($_SERVER, $_SERVER['SERVER_PROTOCOL']); } else { return new Http($_SERVER); } }); $this['Dispatcher'] = $this->share(function ($c) { return new Dispatcher($c['Protocol'], $c['MiddlewareDispatcher']); }); /** * Middleware */ $app = $this; $this['SecurityMiddleware'] = $this->share(function ($c) use($app) { return new SecurityMiddleware($app, $c['Request']); }); $middleWares = $this->middleWares; $this['MiddlewareDispatcher'] = $this->share(function ($c) use($middleWares) { $dispatcher = new MiddlewareDispatcher(); $dispatcher->registerMiddleware($c['SecurityMiddleware']); foreach ($middleWares as $middleWare) { $dispatcher->registerMiddleware($middleWare); } return $dispatcher; }); /** * Utilities */ $this['TimeFactory'] = $this->share(function ($c) { return new TimeFactory(); }); }
/** * Put your class dependencies in here * @param string $appName the name of the app */ public function __construct($appName, $urlParams = array()) { parent::__construct(); $this['AppName'] = $appName; $this['urlParams'] = $urlParams; /** @var \OC\ServerContainer $server */ $server = $this->getServer(); $server->registerAppContainer($appName, $this); // aliases $this->registerAlias('appName', 'AppName'); $this->registerAlias('webRoot', 'WebRoot'); $this->registerAlias('userId', 'UserId'); /** * Core services */ $this->registerService('OCP\\IAppConfig', function ($c) { return $this->getServer()->getAppConfig(); }); $this->registerService('OCP\\App\\IAppManager', function ($c) { return $this->getServer()->getAppManager(); }); $this->registerService('OCP\\AppFramework\\Http\\IOutput', function ($c) { return new Output($this->getServer()->getWebRoot()); }); $this->registerService('OCP\\IAvatarManager', function ($c) { return $this->getServer()->getAvatarManager(); }); $this->registerService('OCP\\Activity\\IManager', function ($c) { return $this->getServer()->getActivityManager(); }); $this->registerService('OCP\\ICache', function ($c) { return $this->getServer()->getCache(); }); $this->registerService('OCP\\ICacheFactory', function ($c) { return $this->getServer()->getMemCacheFactory(); }); $this->registerService('OC\\CapabilitiesManager', function ($c) { return $this->getServer()->getCapabilitiesManager(); }); $this->registerService('OCP\\IConfig', function ($c) { return $this->getServer()->getConfig(); }); $this->registerService('OCP\\Contacts\\IManager', function ($c) { return $this->getServer()->getContactsManager(); }); $this->registerService('OCP\\IDateTimeZone', function ($c) { return $this->getServer()->getDateTimeZone(); }); $this->registerService('OCP\\IDb', function ($c) { return $this->getServer()->getDb(); }); $this->registerService('OCP\\IDBConnection', function ($c) { return $this->getServer()->getDatabaseConnection(); }); $this->registerService('OCP\\Diagnostics\\IEventLogger', function ($c) { return $this->getServer()->getEventLogger(); }); $this->registerService('OCP\\Diagnostics\\IQueryLogger', function ($c) { return $this->getServer()->getQueryLogger(); }); $this->registerService('OCP\\Files\\IMimeTypeDetector', function ($c) { return $this->getServer()->getMimeTypeDetector(); }); $this->registerService('OCP\\Files\\Config\\IMountProviderCollection', function ($c) { return $this->getServer()->getMountProviderCollection(); }); $this->registerService('OCP\\Files\\IRootFolder', function ($c) { return $this->getServer()->getRootFolder(); }); $this->registerService('OCP\\IGroupManager', function ($c) { return $this->getServer()->getGroupManager(); }); $this->registerService('OCP\\IL10N', function ($c) { return $this->getServer()->getL10N($c->query('AppName')); }); $this->registerService('OCP\\ILogger', function ($c) { return $this->getServer()->getLogger(); }); $this->registerService('OCP\\BackgroundJob\\IJobList', function ($c) { return $this->getServer()->getJobList(); }); $this->registerAlias('OCP\\AppFramework\\Utility\\IControllerMethodReflector', 'OC\\AppFramework\\Utility\\ControllerMethodReflector'); $this->registerAlias('ControllerMethodReflector', 'OCP\\AppFramework\\Utility\\IControllerMethodReflector'); $this->registerService('OCP\\Files\\IMimeTypeDetector', function ($c) { return $this->getServer()->getMimeTypeDetector(); }); $this->registerService('OCP\\INavigationManager', function ($c) { return $this->getServer()->getNavigationManager(); }); $this->registerService('OCP\\Notification\\IManager', function ($c) { return $this->getServer()->getNotificationManager(); }); $this->registerService('OCP\\IPreview', function ($c) { return $this->getServer()->getPreviewManager(); }); $this->registerService('OCP\\IRequest', function () { return $this->getServer()->getRequest(); }); $this->registerAlias('Request', 'OCP\\IRequest'); $this->registerService('OCP\\ITagManager', function ($c) { return $this->getServer()->getTagManager(); }); $this->registerService('OCP\\ITempManager', function ($c) { return $this->getServer()->getTempManager(); }); $this->registerAlias('OCP\\AppFramework\\Utility\\ITimeFactory', 'OC\\AppFramework\\Utility\\TimeFactory'); $this->registerAlias('TimeFactory', 'OCP\\AppFramework\\Utility\\ITimeFactory'); $this->registerService('OCP\\Route\\IRouter', function ($c) { return $this->getServer()->getRouter(); }); $this->registerService('OCP\\ISearch', function ($c) { return $this->getServer()->getSearch(); }); $this->registerService('OCP\\ISearch', function ($c) { return $this->getServer()->getSearch(); }); $this->registerService('OCP\\Security\\ICrypto', function ($c) { return $this->getServer()->getCrypto(); }); $this->registerService('OCP\\Security\\IHasher', function ($c) { return $this->getServer()->getHasher(); }); $this->registerService('OCP\\Security\\ICredentialsManager', function ($c) { return $this->getServer()->getCredentialsManager(); }); $this->registerService('OCP\\Security\\ISecureRandom', function ($c) { return $this->getServer()->getSecureRandom(); }); $this->registerService('OCP\\Share\\IManager', function ($c) { return $this->getServer()->getShareManager(); }); $this->registerService('OCP\\SystemTag\\ISystemTagManager', function () { return $this->getServer()->getSystemTagManager(); }); $this->registerService('OCP\\SystemTag\\ISystemTagObjectMapper', function () { return $this->getServer()->getSystemTagObjectMapper(); }); $this->registerService('OCP\\IURLGenerator', function ($c) { return $this->getServer()->getURLGenerator(); }); $this->registerService('OCP\\IUserManager', function ($c) { return $this->getServer()->getUserManager(); }); $this->registerService('OCP\\IUserSession', function ($c) { return $this->getServer()->getUserSession(); }); $this->registerService('OCP\\ISession', function ($c) { return $this->getServer()->getSession(); }); $this->registerService('ServerContainer', function ($c) { return $this->getServer(); }); $this->registerAlias('OCP\\IServerContainer', 'ServerContainer'); $this->registerService('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface', function ($c) { return $this->getServer()->getEventDispatcher(); }); $this->registerService('OCP\\AppFramework\\IAppContainer', function ($c) { return $c; }); // commonly used attributes $this->registerService('UserId', function ($c) { return $c->query('OCP\\IUserSession')->getSession()->get('user_id'); }); $this->registerService('WebRoot', function ($c) { return $c->query('ServerContainer')->getWebRoot(); }); /** * App Framework APIs */ $this->registerService('API', function ($c) { $c->query('OCP\\ILogger')->debug('Accessing the API class is deprecated! Use the appropriate ' . 'services instead!'); return new API($c['AppName']); }); $this->registerService('Protocol', function ($c) { /** @var \OC\Server $server */ $server = $c->query('ServerContainer'); $protocol = $server->getRequest()->getHttpProtocol(); return new Http($_SERVER, $protocol); }); $this->registerService('Dispatcher', function ($c) { return new Dispatcher($c['Protocol'], $c['MiddlewareDispatcher'], $c['ControllerMethodReflector'], $c['Request']); }); /** * Middleware */ $app = $this; $this->registerService('SecurityMiddleware', function ($c) use($app) { return new SecurityMiddleware($c['Request'], $c['ControllerMethodReflector'], $app->getServer()->getNavigationManager(), $app->getServer()->getURLGenerator(), $app->getServer()->getLogger(), $c['AppName'], $app->isLoggedIn(), $app->isAdminUser()); }); $this->registerService('CORSMiddleware', function ($c) { return new CORSMiddleware($c['Request'], $c['ControllerMethodReflector'], $c['OCP\\IUserSession']); }); $this->registerService('SessionMiddleware', function ($c) use($app) { return new SessionMiddleware($c['Request'], $c['ControllerMethodReflector'], $app->getServer()->getSession()); }); $middleWares =& $this->middleWares; $this->registerService('MiddlewareDispatcher', function ($c) use(&$middleWares) { $dispatcher = new MiddlewareDispatcher(); $dispatcher->registerMiddleware($c['CORSMiddleware']); $dispatcher->registerMiddleware($c['SecurityMiddleware']); foreach ($middleWares as $middleWare) { $dispatcher->registerMiddleware($c[$middleWare]); } $dispatcher->registerMiddleware($c['SessionMiddleware']); return $dispatcher; }); }
public function testExceptionShouldRunAfterExceptionOfOnlyPreviouslyExecutedMiddlewares() { $m1 = $this->getMiddleware(); $m2 = $this->getMiddleware(true); $m3 = $this->getMock('\\OCP\\AppFramework\\Middleware'); $m3->expects($this->never())->method('afterException'); $m3->expects($this->never())->method('beforeController'); $m3->expects($this->never())->method('afterController'); $this->dispatcher->registerMiddleware($m3); $this->dispatcher->beforeOutput($this->controller, $this->method, $this->out); $this->assertEquals(2, $m1->beforeOutputOrder); $this->assertEquals(1, $m2->beforeOutputOrder); }
/** * Put your class dependencies in here * @param string $appName the name of the app */ public function __construct($appName, $urlParams = array()) { $this['AppName'] = $appName; $this['urlParams'] = $urlParams; /** * Core services */ $this->registerService('OCP\\IAppConfig', function ($c) { return \OC::$server->getAppConfig(); }); $this->registerService('OCP\\IAppManager', function ($c) { return \OC::$server->getAppManager(); }); $this->registerService('OCP\\IAvatarManager', function ($c) { return \OC::$server->getAvatarManager(); }); $this->registerService('OCP\\Activity\\IManager', function ($c) { return \OC::$server->getActivityManager(); }); $this->registerService('OCP\\ICache', function ($c) { return \OC::$server->getCache(); }); $this->registerService('OCP\\ICacheFactory', function ($c) { return \OC::$server->getMemCacheFactory(); }); $this->registerService('OCP\\IConfig', function ($c) { return \OC::$server->getConfig(); }); $this->registerService('OCP\\Contacts\\IManager', function ($c) { return \OC::$server->getContactsManager(); }); $this->registerService('OCP\\IDateTimeZone', function ($c) { return \OC::$server->getDateTimeZone(); }); $this->registerService('OCP\\IDb', function ($c) { return \OC::$server->getDb(); }); $this->registerService('OCP\\IDBConnection', function ($c) { return \OC::$server->getDatabaseConnection(); }); $this->registerService('OCP\\Diagnostics\\IEventLogger', function ($c) { return \OC::$server->getEventLogger(); }); $this->registerService('OCP\\Diagnostics\\IQueryLogger', function ($c) { return \OC::$server->getQueryLogger(); }); $this->registerService('OCP\\Files\\Config\\IMountProviderCollection', function ($c) { return \OC::$server->getMountProviderCollection(); }); $this->registerService('OCP\\Files\\IRootFolder', function ($c) { return \OC::$server->getRootFolder(); }); $this->registerService('OCP\\IGroupManager', function ($c) { return \OC::$server->getGroupManager(); }); $this->registerService('OCP\\IL10N', function ($c) { return \OC::$server->getL10N($c->query('AppName')); }); $this->registerService('OCP\\ILogger', function ($c) { return \OC::$server->getLogger(); }); $this->registerService('OCP\\BackgroundJob\\IJobList', function ($c) { return \OC::$server->getJobList(); }); $this->registerService('OCP\\AppFramework\\Utility\\IControllerMethodReflector', function ($c) { return $c->query('ControllerMethodReflector'); }); $this->registerService('OCP\\INavigationManager', function ($c) { return \OC::$server->getNavigationManager(); }); $this->registerService('OCP\\IPreview', function ($c) { return \OC::$server->getPreviewManager(); }); $this->registerService('OCP\\IRequest', function ($c) { return $c->query('Request'); }); $this->registerService('OCP\\ITagManager', function ($c) { return \OC::$server->getTagManager(); }); $this->registerService('OCP\\ITempManager', function ($c) { return \OC::$server->getTempManager(); }); $this->registerService('OCP\\AppFramework\\Utility\\ITimeFactory', function ($c) { return $c->query('TimeFactory'); }); $this->registerService('OCP\\Route\\IRouter', function ($c) { return \OC::$server->getRouter(); }); $this->registerService('OCP\\ISearch', function ($c) { return \OC::$server->getSearch(); }); $this->registerService('OCP\\ISearch', function ($c) { return \OC::$server->getSearch(); }); $this->registerService('OCP\\Security\\ICrypto', function ($c) { return \OC::$server->getCrypto(); }); $this->registerService('OCP\\Security\\IHasher', function ($c) { return \OC::$server->getHasher(); }); $this->registerService('OCP\\Security\\ISecureRandom', function ($c) { return \OC::$server->getSecureRandom(); }); $this->registerService('OCP\\IURLGenerator', function ($c) { return \OC::$server->getURLGenerator(); }); $this->registerService('OCP\\IUserManager', function ($c) { return \OC::$server->getUserManager(); }); $this->registerService('OCP\\IUserSession', function ($c) { return \OC::$server->getUserSession(); }); $this->registerService('ServerContainer', function ($c) { $c->query('OCP\\ILogger')->debug('Accessing the server container is deprecated. Use type ' . 'annotations to inject core services instead!'); return \OC::$server; }); // commonly used attributes $this->registerService('UserId', function ($c) { return $c->query('OCP\\IUserSession')->getSession()->get('user_id'); }); $this->registerService('WebRoot', function ($c) { return $c->query('ServerContainer')->getWebRoot(); }); /** * App Framework APIs */ $this->registerService('API', function ($c) { $c->query('OCP\\ILogger')->debug('Accessing the API class is deprecated! Use the appropriate ' . 'services instead!'); return new API($c['AppName']); }); $this->registerService('Request', function ($c) { /** @var $c SimpleContainer */ /** @var $server SimpleContainer */ $server = $c->query('ServerContainer'); $server->registerParameter('urlParams', $c['urlParams']); /** @var $server IServerContainer */ return $server->getRequest(); }); $this->registerService('Protocol', function ($c) { if (isset($_SERVER['SERVER_PROTOCOL'])) { return new Http($_SERVER, $_SERVER['SERVER_PROTOCOL']); } else { return new Http($_SERVER); } }); $this->registerService('Dispatcher', function ($c) { return new Dispatcher($c['Protocol'], $c['MiddlewareDispatcher'], $c['ControllerMethodReflector'], $c['Request']); }); /** * Middleware */ $app = $this; $this->registerService('SecurityMiddleware', function ($c) use($app) { return new SecurityMiddleware($c['Request'], $c['ControllerMethodReflector'], $app->getServer()->getNavigationManager(), $app->getServer()->getURLGenerator(), $app->getServer()->getLogger(), $c['AppName'], $app->isLoggedIn(), $app->isAdminUser()); }); $this->registerService('CORSMiddleware', function ($c) { return new CORSMiddleware($c['Request'], $c['ControllerMethodReflector']); }); $this->registerService('SessionMiddleware', function ($c) use($app) { return new SessionMiddleware($c['Request'], $c['ControllerMethodReflector'], $app->getServer()->getSession()); }); $middleWares =& $this->middleWares; $this->registerService('MiddlewareDispatcher', function ($c) use(&$middleWares) { $dispatcher = new MiddlewareDispatcher(); $dispatcher->registerMiddleware($c['SecurityMiddleware']); $dispatcher->registerMiddleware($c['CORSMiddleware']); foreach ($middleWares as $middleWare) { $dispatcher->registerMiddleware($c[$middleWare]); } $dispatcher->registerMiddleware($c['SessionMiddleware']); return $dispatcher; }); /** * Utilities */ $this->registerService('TimeFactory', function ($c) { return new TimeFactory(); }); $this->registerService('ControllerMethodReflector', function ($c) { return new ControllerMethodReflector(); }); }
/** * Put your class dependencies in here * @param string $appName the name of the app */ public function __construct($appName, $urlParams = array()) { $this['AppName'] = $appName; $this['urlParams'] = $urlParams; $this->registerParameter('ServerContainer', \OC::$server); $this['API'] = $this->share(function ($c) { return new API($c['AppName']); }); /** * Http */ $this['Request'] = $this->share(function ($c) { /** @var $c SimpleContainer */ /** @var $server IServerContainer */ $server = $c->query('ServerContainer'); $server->registerParameter('urlParams', $c['urlParams']); return $server->getRequest(); }); $this['Protocol'] = $this->share(function ($c) { if (isset($_SERVER['SERVER_PROTOCOL'])) { return new Http($_SERVER, $_SERVER['SERVER_PROTOCOL']); } else { return new Http($_SERVER); } }); $this['Dispatcher'] = $this->share(function ($c) { return new Dispatcher($c['Protocol'], $c['MiddlewareDispatcher'], $c['ControllerMethodReflector'], $c['Request']); }); /** * Middleware */ $app = $this; $this['SecurityMiddleware'] = $this->share(function ($c) use($app) { return new SecurityMiddleware($c['Request'], $c['ControllerMethodReflector'], $app->getServer()->getNavigationManager(), $app->getServer()->getURLGenerator(), $app->getServer()->getLogger(), $c['AppName'], $app->isLoggedIn(), $app->isAdminUser()); }); $this['CORSMiddleware'] = $this->share(function ($c) use($app) { return new CORSMiddleware($c['Request'], $c['ControllerMethodReflector'], $app->getServer()->getUserSession()); }); $middleWares =& $this->middleWares; $this['MiddlewareDispatcher'] = $this->share(function ($c) use(&$middleWares) { $dispatcher = new MiddlewareDispatcher(); $dispatcher->registerMiddleware($c['CORSMiddleware']); $dispatcher->registerMiddleware($c['SecurityMiddleware']); foreach ($middleWares as $middleWare) { $dispatcher->registerMiddleware($c[$middleWare]); } return $dispatcher; }); /** * Utilities */ $this['TimeFactory'] = $this->share(function ($c) { return new TimeFactory(); }); $this['ControllerMethodReflector'] = $this->share(function ($c) { return new ControllerMethodReflector(); }); }