/** * @param SimplePieFileFactory a factory for getting a simple pie file instance * @param array $regexXPathPair an associative array containing regex to * match the url and the xpath that should be used for it to extract the * page * @param int $maximumTimeout maximum timeout in seconds, defaults to 10 sec */ public function __construct(SimplePieAPIFactory $fileFactory, array $regexXPathPair, Config $config) { $this->regexXPathPair = $regexXPathPair; $this->fileFactory = $fileFactory; $this->maximumTimeout = $config->getFeedFetcherTimeout(); $this->config = $config; }
public function __construct(FolderMapper $folderMapper, $l10n, $timeFactory, Config $config) { parent::__construct($folderMapper); $this->l10n = $l10n; $this->timeFactory = $timeFactory; $this->autoPurgeMinimumInterval = $config->getAutoPurgeMinimumInterval(); $this->folderMapper = $folderMapper; }
public function __construct(ItemMapper $itemMapper, StatusFlag $statusFlag, $timeFactory, Config $config) { parent::__construct($itemMapper); $this->statusFlag = $statusFlag; $this->autoPurgeCount = $config->getAutoPurgeCount(); $this->timeFactory = $timeFactory; $this->itemMapper = $itemMapper; }
public function __construct(FeedMapper $feedMapper, Fetcher $feedFetcher, ItemMapper $itemMapper, Logger $logger, $l10n, $timeFactory, Config $config, Enhancer $enhancer, $purifier) { parent::__construct($feedMapper); $this->feedFetcher = $feedFetcher; $this->itemMapper = $itemMapper; $this->logger = $logger; $this->l10n = $l10n; $this->timeFactory = $timeFactory; $this->autoPurgeMinimumInterval = $config->getAutoPurgeMinimumInterval(); $this->enhancer = $enhancer; $this->purifier = $purifier; $this->feedMapper = $feedMapper; }
public function __construct(SimplePieAPIFactory $simplePieFactory, FaviconFetcher $faviconFetcher, $time, $cacheDirectory, Config $config) { $this->cacheDirectory = $cacheDirectory; $this->cacheDuration = $config->getSimplePieCacheDuration(); $this->fetchTimeout = $config->getFeedFetcherTimeout(); $this->faviconFetcher = $faviconFetcher; $this->simplePieFactory = $simplePieFactory; $this->time = $time; $this->proxyHost = $config->getProxyHost(); $this->proxyPort = $config->getProxyPort(); $this->proxyAuth = $config->getProxyAuth(); }
public function __construct(array $urlParams = array()) { parent::__construct('news', $urlParams); $container = $this->getContainer(); /** * Controllers */ $container->registerService('PageController', function ($c) { return new PageController($c->query('AppName'), $c->query('Request'), $c->query('CoreConfig'), $c->query('L10N'), $c->query('UserId')); }); $container->registerService('FolderController', function ($c) { return new FolderController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('UserId')); }); $container->registerService('FeedController', function ($c) { return new FeedController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('CoreConfig'), $c->query('UserId')); }); $container->registerService('ItemController', function ($c) { return new ItemController($c->query('AppName'), $c->query('Request'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('CoreConfig'), $c->query('UserId')); }); $container->registerService('ExportController', function ($c) { return new ExportController($c->query('AppName'), $c->query('Request'), $c->query('FeedBusinessLayer'), $c->query('FolderBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('OPMLExporter'), $c->query('UserId')); }); $container->registerService('ApiController', function ($c) { return new ApiController($c->query('AppName'), $c->query('Request'), $c->query('Updater'), $c->query('CoreConfig')); }); $container->registerService('FolderApiController', function ($c) { return new FolderApiController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('UserId')); }); $container->registerService('FeedApiController', function ($c) { return new FeedApiController($c->query('AppName'), $c->query('Request'), $c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer'), $c->query('Logger'), $c->query('UserId')); }); $container->registerService('ItemApiController', function ($c) { return new ItemApiController($c->query('AppName'), $c->query('Request'), $c->query('ItemBusinessLayer'), $c->query('UserId')); }); /** * Business Layer */ $container->registerService('FolderBusinessLayer', function ($c) { return new FolderBusinessLayer($c->query('FolderMapper'), $c->query('L10N'), $c->query('TimeFactory'), $c->query('Config')); }); $container->registerService('FeedBusinessLayer', function ($c) { return new FeedBusinessLayer($c->query('FeedMapper'), $c->query('Fetcher'), $c->query('ItemMapper'), $c->query('Logger'), $c->query('L10N'), $c->query('TimeFactory'), $c->query('Config'), $c->query('Enhancer'), $c->query('HTMLPurifier')); }); $container->registerService('ItemBusinessLayer', function ($c) { return new ItemBusinessLayer($c->query('ItemMapper'), $c->query('StatusFlag'), $c->query('TimeFactory'), $c->query('Config')); }); /** * Mappers */ $container->registerService('MapperFactory', function ($c) { return new MapperFactory($c->query('DatabaseType'), $c->query('Db')); }); $container->registerService('FolderMapper', function ($c) { return new FolderMapper($c->query('Db')); }); $container->registerService('FeedMapper', function ($c) { return new FeedMapper($c->query('Db')); }); $container->registerService('ItemMapper', function ($c) { return $c->query('MapperFactory')->getItemMapper($c->query('Db')); }); /** * App config parser */ $container->registerService('AppConfig', function ($c) { // not performant but well :/ // $config = $c->query('ServerContainer')->getAppConfig(); oc7 only $installedApps = \OC_Appconfig::getApps(); $apps = array(); foreach ($installedApps as $app) { $apps[] = array($app => \OC_Appconfig::getValue($app, 'installed_version', '0')); } // order extensions in name => version $loadedExtensions = get_loaded_extensions(); $extensions = array(); foreach ($loadedExtensions as $extension) { $extensions[$extension] = phpversion($extension); } return new AppConfig($c->query('ServerContainer')->getNavigationManager(), $c->query('L10N'), $c->query('ServerContainer')->getURLGenerator(), phpversion(), implode('.', \OCP\Util::getVersion()), $apps, $extensions, $c->query('DatabaseType')); }); /** * Core */ $container->registerService('L10N', function ($c) { return $c->query('ServerContainer')->getL10N($c->query('AppName')); }); $container->registerService('UserId', function () { return \OCP\User::getUser(); }); $container->registerService('Logger', function ($c) { return new Logger($c->query('AppName')); }); $container->registerService('Db', function () { return new Db(); }); $container->registerService('CoreConfig', function ($c) { return $c->query('ServerContainer')->getConfig(); }); $container->registerService('DatabaseType', function ($c) { return $c->query('ServerContainer')->getConfig()->getSystemValue('dbtype'); }); /** * Utility */ $container->registerService('ConfigView', function () { $view = new View('/news/config'); if (!$view->file_exists('')) { $view->mkdir(''); } return $view; }); $container->registerService('Config', function ($c) { $config = new Config($c->query('ConfigView'), $c->query('Logger')); $config->read('config.ini', true); return $config; }); $container->registerService('simplePieCacheDirectory', function ($c) { $directory = $c->query('CoreConfig')->getSystemValue('datadirectory') . '/news/cache/simplepie'; if (!is_dir($directory)) { mkdir($directory, 0770, true); } return $directory; }); $container->registerService('HTMLPurifier', function ($c) { $directory = $c->query('CoreConfig')->getSystemValue('datadirectory') . '/news/cache/purifier'; if (!is_dir($directory)) { mkdir($directory, 0770, true); } $config = \HTMLPurifier_Config::createDefault(); $config->set('HTML.ForbiddenAttributes', 'class'); $config->set('Cache.SerializerPath', $directory); $config->set('HTML.SafeIframe', true); $config->set('URI.SafeIframeRegexp', '%^(?:https?:)?//(' . 'www.youtube(?:-nocookie)?.com/embed/|' . 'player.vimeo.com/video/)%'); //allow YouTube and Vimeo return new \HTMLPurifier($config); }); $container->registerService('Enhancer', function ($c) { $enhancer = new Enhancer(); // register simple enhancers from config json file $xpathEnhancerConfig = file_get_contents(__DIR__ . '/../articleenhancer/xpathenhancers.json'); foreach (json_decode($xpathEnhancerConfig, true) as $feed => $config) { $articleEnhancer = new XPathArticleEnhancer($c->query('SimplePieAPIFactory'), $config, $c->query('Config')); $enhancer->registerEnhancer($feed, $articleEnhancer); } $regexEnhancerConfig = file_get_contents(__DIR__ . '/../articleenhancer/regexenhancers.json'); foreach (json_decode($regexEnhancerConfig, true) as $feed => $config) { foreach ($config as $matchArticleUrl => $regex) { $articleEnhancer = new RegexArticleEnhancer($matchArticleUrl, $regex); $enhancer->registerEnhancer($feed, $articleEnhancer); } } return $enhancer; }); /** * Fetchers */ $container->registerService('Fetcher', function ($c) { $fetcher = new Fetcher(); // register fetchers in order // the most generic fetcher should be the last one $fetcher->registerFetcher($c->query('FeedFetcher')); return $fetcher; }); $container->registerService('FeedFetcher', function ($c) { return new FeedFetcher($c->query('SimplePieAPIFactory'), $c->query('FaviconFetcher'), $c->query('TimeFactory'), $c->query('simplePieCacheDirectory'), $c->query('Config')); }); $container->registerService('StatusFlag', function () { return new StatusFlag(); }); $container->registerService('OPMLExporter', function () { return new OPMLExporter(); }); $container->registerService('Updater', function ($c) { return new Updater($c->query('FolderBusinessLayer'), $c->query('FeedBusinessLayer'), $c->query('ItemBusinessLayer')); }); $container->registerService('SimplePieAPIFactory', function () { return new SimplePieAPIFactory(); }); $container->registerService('FaviconFetcher', function ($c) { return new FaviconFetcher($c->query('SimplePieAPIFactory'), $c->query('Config')); }); /** * Middleware */ $container->registerService('CORSMiddleware', function ($c) { return new CORSMiddleware($c->query('Request')); }); $container->registerMiddleWare('CORSMiddleware'); }