summaryrefslogtreecommitdiffstats
path: root/appinfo
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2016-07-23 21:24:54 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2016-07-23 21:24:54 +0200
commit004fcbbcc7609ca83807f2e38967ef54f469bf72 (patch)
tree49eb99b4ea92b2045793fc567f719b31ec7f9042 /appinfo
parent60abc0ed4438c9b6fda245b0dc33cb483bc2aeaf (diff)
Move to new directory structure
Diffstat (limited to 'appinfo')
-rw-r--r--appinfo/application.php246
-rw-r--r--appinfo/preupdate.php17
2 files changed, 0 insertions, 263 deletions
diff --git a/appinfo/application.php b/appinfo/application.php
deleted file mode 100644
index 4c8a3769a..000000000
--- a/appinfo/application.php
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/**
- * ownCloud - News
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Alessandro Cosentino <cosenal@gmail.com>
- * @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @copyright Alessandro Cosentino 2012
- * @copyright Bernhard Posselt 2012, 2014
- */
-
-namespace OCA\News\AppInfo;
-
-use HTMLPurifier;
-use HTMLPurifier_Config;
-
-use PicoFeed\Config\Config as PicoFeedConfig;
-use PicoFeed\Reader\Reader as PicoFeedReader;
-
-use OCP\ILogger;
-use OCP\INavigationManager;
-use OCP\IURLGenerator;
-use OCP\IConfig;
-use OCP\IDBConnection;
-use OCP\AppFramework\App;
-use OCP\Files\IRootFolder;
-
-use OCA\News\Config\AppConfig;
-use OCA\News\Config\Config;
-use OCA\News\Service\FeedService;
-use OCA\News\Db\MapperFactory;
-use OCA\News\Db\ItemMapper;
-use OCA\News\Fetcher\Fetcher;
-use OCA\News\Fetcher\FeedFetcher;
-use OCA\News\Fetcher\YoutubeFetcher;
-use OCA\News\Explore\RecommendedSites;
-use OCA\News\Utility\ProxyConfigParser;
-
-
-class Application extends App {
-
- public function __construct(array $urlParams=[]) {
- parent::__construct('news', $urlParams);
-
- // files
- $this->registerFileContents('checksums', 'checksum.json');
- $this->registerFileContents('info', 'info.xml');
-
- // parameters
- $this->registerParameter('exploreDir', __DIR__ . '/../explore/feeds');
- $this->registerParameter('configFile', 'config.ini');
-
- // factories
- $this->registerFactory(ItemMapper::class, MapperFactory::class);
-
-
- /**
- * App config parser
- */
- /** @noinspection PhpParamsInspection */
- $this->registerService(AppConfig::class, function($c) {
- $config = new AppConfig(
- $c->query(INavigationManager::class),
- $c->query(IURLGenerator::class)
- );
-
- $config->loadConfig($c->query('info'));
-
- return $config;
- });
-
- /**
- * Core
- */
- /** @noinspection PhpParamsInspection */
- $this->registerService('LoggerParameters', function($c) {
- return ['app' => $c->query('AppName')];
- });
-
- /** @noinspection PhpParamsInspection */
- $this->registerService('databaseType', function($c) {
- return $c->query(IConfig::class)->getSystemValue('dbtype');
- });
-
- /** @noinspection PhpParamsInspection */
- $this->registerService('ConfigView', function($c) {
- $fs = $c->query(IRootFolder::class);
- $path = 'news/config';
- if ($fs->nodeExists($path)) {
- return $fs->get($path);
- } else {
- return $fs->newFolder($path);
- }
- });
-
-
- /** @noinspection PhpParamsInspection */
- $this->registerService(Config::class, function($c) {
- $config = new Config(
- $c->query('ConfigView'),
- $c->query(ILogger::class),
- $c->query('LoggerParameters')
- );
- $config->read($c->query('configFile'), true);
- return $config;
- });
-
- /** @noinspection PhpParamsInspection */
- $this->registerService(HTMLPurifier::class, function($c) {
- $directory = $c->query(IConfig::class)
- ->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/|' .
- 'vk.com/video_ext.php)%'); //allow YouTube and Vimeo
- $def = $config->getHTMLDefinition(true);
- $def->addAttribute('iframe', 'allowfullscreen', 'Bool');
- return new HTMLPurifier($config);
- });
-
- /**
- * Fetchers
- */
- /** @noinspection PhpParamsInspection */
- $this->registerService(PicoFeedConfig::class, function($c) {
- // FIXME: move this into a separate class for testing?
- $config = $c->query(Config::class);
- $proxy = $c->query(ProxyConfigParser::class);
-
- // use chrome's user agent string since mod_security rules
- // assume that only browsers can send user agent strings. This
- // can lead to blocked feed updates like joomla.org
- // For more information see
- // https://www.atomicorp.com/wiki/index.php/WAF_309925
- $userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36' .
- '(KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36';
-
- $pico = new PicoFeedConfig();
- $pico->setClientUserAgent($userAgent)
- ->setClientTimeout($config->getFeedFetcherTimeout())
- ->setMaxRedirections($config->getMaxRedirects())
- ->setMaxBodySize($config->getMaxSize())
- ->setParserHashAlgo('md5');
-
- // proxy settings
- $proxySettings = $proxy->parse();
- $host = $proxySettings['host'];
- $port = $proxySettings['port'];
- $user = $proxySettings['user'];
- $password = $proxySettings['password'];
-
- if ($host) {
- $pico->setProxyHostname($host);
-
- if ($port) {
- $pico->setProxyPort($port);
- }
- }
-
- if ($user) {
- $pico->setProxyUsername($user)
- ->setProxyPassword($password);
- }
-
- return $pico;
- });
-
- /** @noinspection PhpParamsInspection */
- $this->registerService(Fetcher::class, function($c) {
- $fetcher = new Fetcher();
-
- // register fetchers in order, the most generic fetcher should be
- // the last one
- $fetcher->registerFetcher($c->query(YoutubeFetcher::class));
- $fetcher->registerFetcher($c->query(FeedFetcher::class));
-
- return $fetcher;
- });
-
-
- }
-
- /**
- * Registers the content of a file under a key
- * @param string $key
- * @param string $file path relative to this file, __DIR__ will be prepended
- */
- private function registerFileContents($key, $file) {
- /** @noinspection PhpParamsInspection */
- $this->registerService($key, function () use ($file) {
- return file_get_contents(__DIR__ . '/' . $file);
- });
- }
-
- /**
- * Shortcut for registering a service
- * @param string $key
- * @param closure $factory
- * @param boolean $shared
- */
- private function registerService($key, $factory, $shared=true) {
- $this->getContainer()->registerService($key, $factory, $shared);
- }
-
- /**
- * Shortcut for registering a parameter
- * @param string $key
- * @param mixed $value
- */
- private function registerParameter($key, $value) {
- $this->getContainer()->registerParameter($key, $value);
- }
-
- /**
- * Register a class containing the app construction logic instead of the
- * inlining everything in this class to enhance testability
- * @param string $key fully qualified class name
- * @param string $factory fully qualified factory class name
- */
- private function registerFactory($key, $factory) {
- /** @noinspection PhpParamsInspection */
- $this->registerService($key, function ($c) use ($factory) {
- return $c->query($factory)->build();
- });
- }
-
- /**
- * Register the additional config parameters found in the info.xml
- */
- public function registerConfig() {
- $this->getContainer()->query(AppConfig::class)->registerAll();
- }
-
-}
diff --git a/appinfo/preupdate.php b/appinfo/preupdate.php
deleted file mode 100644
index f356ae0ce..000000000
--- a/appinfo/preupdate.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * ownCloud - News
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @copyright Bernhard Posselt 2015
- */
-
-namespace OCA\News\AppInfo;
-
-use OCA\News\Upgrade\Upgrade;
-
-$app = new Application();
-$app->getContainer()->query(Upgrade::class)->preUpgrade();