Code Monkey home page Code Monkey logo

rss-extender's Introduction

RSS Extender

Convert Atom or RSS with excerpts to RSS feed with full articles using a CSS selector.

You can use my instance at https://rssextender.hoa.ro or host your own.

Homepage

CSS Selector

Usage

  1. Provide an ATOM or RSS feed containing only excerpts Example: https://www.orbitale.io/feed.xml
  2. Open an article from the feed entry, and find a CSS selector which contains the article content. Example: .post-content (there is no selector)
  3. Fully extracted feed is available at https://rssextender.hoa.ro/?feed=https%3A%2F%2Fwww.orbitale.io%2Ffeed.xml
  4. Articles are cached locally until the feed entry last date changed.

Installation

Get the project and dependencies:

git clone [email protected]:ArthurHoaro/rss-extender.git
composer install

Expose the public folder behind a web server w/ PHP.


With Docker, you can use the provided Docker image. Example with nginx-proxy as a reverse proxy:

docker run -d \
  -p 80 \
  -v ./data:/var/www/rssextender/data \
  -e VIRTUAL_HOST=<domain.tld> \
  -e VIRTUAL_PORT=80 \
  --restart unless-stopped \
  --name rss-extender \
  arthurhoaro/rss-extender:latest

License

MIT

rss-extender's People

Contributors

arthurhoaro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

nusiloot wizos

rss-extender's Issues

replaceRelativeUrls() must be of the type string, null given

Feed: https://sandfox.me/feed.xml
Source: https://gist.github.com/ArthurHoaro/2c94ba5634c3c0e48065a5ada7d03a25
Error: .entry > h3 > a

Slim Application Error

The application could not run because of the following error:
Details
Type: TypeError
Message: Argument 1 passed to ArthurHoaro\RssExtender\Utils\FeedUtils::replaceRelativeUrls() must be of the type string, null given, called in /var/www/rssextender/src/Processor/FeedProcessor.php on line 116
File: /var/www/rssextender/src/Utils/FeedUtils.php
Line: 40
Trace

#0 /var/www/rssextender/src/Processor/FeedProcessor.php(116): ArthurHoaro\RssExtender\Utils\FeedUtils::replaceRelativeUrls(NULL, 'https://sandfox...')
#1 /var/www/rssextender/src/Processor/FeedProcessor.php(92): ArthurHoaro\RssExtender\Processor\FeedProcessor->retrieveItem(Object(GuzzleHttp\Client), Object(FeedIo\Feed\Item))
#2 /var/www/rssextender/src/Processor/FeedProcessor.php(96): ArthurHoaro\RssExtender\Processor\FeedProcessor->ArthurHoaro\RssExtender\Processor\{closure}()
#3 /var/www/rssextender/vendor/symfony/cache/LockRegistry.php(97): ArthurHoaro\RssExtender\Processor\FeedProcessor->ArthurHoaro\RssExtender\Processor\{closure}(Object(Symfony\Component\Cache\CacheItem), true)
#4 /var/www/rssextender/vendor/symfony/cache/Traits/ContractsTrait.php(88): Symfony\Component\Cache\LockRegistry::compute(Object(Closure), Object(Symfony\Component\Cache\CacheItem), true, Object(Symfony\Component\Cache\Adapter\FilesystemAdapter), Object(Closure), NULL)
#5 /var/www/rssextender/vendor/symfony/cache-contracts/CacheTrait.php(68): Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits\{closure}(Object(Symfony\Component\Cache\CacheItem), true)
#6 /var/www/rssextender/vendor/symfony/cache/Traits/ContractsTrait.php(95): Symfony\Component\Cache\Adapter\AbstractAdapter->doGet(Object(Symfony\Component\Cache\Adapter\FilesystemAdapter), '1909cf666d30294...', Object(Closure), 1, Array, NULL)
#7 /var/www/rssextender/vendor/symfony/cache-contracts/CacheTrait.php(30): Symfony\Component\Cache\Adapter\AbstractAdapter->doGet(Object(Symfony\Component\Cache\Adapter\FilesystemAdapter), '1909cf666d30294...', Object(Closure), 1, Array)
#8 /var/www/rssextender/src/Processor/FeedProcessor.php(96): Symfony\Component\Cache\Adapter\AbstractAdapter->get('1909cf666d30294...', Object(Closure))
#9 /var/www/rssextender/src/Processor/FeedProcessor.php(74): ArthurHoaro\RssExtender\Processor\FeedProcessor->processItems(Object(FeedIo\Reader\Result), true)
#10 /var/www/rssextender/src/routes.php(34): ArthurHoaro\RssExtender\Processor\FeedProcessor->read(true)
#11 [internal function]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#12 /var/www/rssextender/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(41): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#13 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(356): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#14 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#15 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(334): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#16 /var/www/rssextender/vendor/slim/slim/Slim/App.php(515): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#17 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#18 /var/www/rssextender/vendor/slim/slim/Slim/App.php(405): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#19 /var/www/rssextender/vendor/slim/slim/Slim/App.php(313): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#20 /var/www/rssextender/public/index.php(33): Slim\App->run()
#21 {main}

cURL error 6: Could not resolve host

Feed: https://www.phpcluster.com/feed/
Selector: .entry-content

Stacktrace:

Slim Application Error

The application could not run because of the following error:
Details
Type: FeedIo\Reader\ReadErrorException
Message: cURL error 6: Could not resolve host: www.phpcluster.com (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
File: /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/Reader.php
Line: 130
Trace

#0 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/FeedIo.php(323): FeedIo\Reader->read('https://www.php...', Object(FeedIo\Feed), Object(DateTime))
#1 /var/www/rssextender/src/Processor/FeedProcessor.php(45): FeedIo\FeedIo->read('https://www.php...')
#2 /var/www/rssextender/src/routes.php(34): ArthurHoaro\RssExtender\Processor\FeedProcessor->read(true)
#3 [internal function]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#4 /var/www/rssextender/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#5 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#6 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#7 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#8 /var/www/rssextender/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#9 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#10 /var/www/rssextender/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#11 /var/www/rssextender/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#12 /var/www/rssextender/public/index.php(33): Slim\App->run()
#13 {main}

Previous exception
Type: GuzzleHttp\Exception\ConnectException
Message: cURL error 6: Could not resolve host: www.phpcluster.com (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
File: /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
Line: 200
Trace

#0 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#4 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#5 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(37): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#6 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Middleware.php(29): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#7 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(70): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#8 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Middleware.php(59): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#9 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/HandlerStack.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#10 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Client.php(351): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#11 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Client.php(162): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array)
#12 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Client.php(182): GuzzleHttp\Client->requestAsync('get', Object(GuzzleHttp\Psr7\Uri), Array)
#13 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/Adapter/Guzzle/Client.php(75): GuzzleHttp\Client->request('get', 'https://www.php...', Array)
#14 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/Reader.php(124): FeedIo\Adapter\Guzzle\Client->getResponse('https://www.php...', Object(DateTime))
#15 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/FeedIo.php(323): FeedIo\Reader->read('https://www.php...', Object(FeedIo\Feed), Object(DateTime))
#16 /var/www/rssextender/src/Processor/FeedProcessor.php(45): FeedIo\FeedIo->read('https://www.php...')
#17 /var/www/rssextender/src/routes.php(34): ArthurHoaro\RssExtender\Processor\FeedProcessor->read(true)
#18 [internal function]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#19 /var/www/rssextender/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#20 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#21 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#22 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#23 /var/www/rssextender/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#24 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#25 /var/www/rssextender/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#26 /var/www/rssextender/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#27 /var/www/rssextender/public/index.php(33): Slim\App->run()
#28 {main}

TypeError: Argument 1 passed to PHPHtmlParser\Dom\Tag::getAttribute() must be of the type string

Feed: https://fabiensanglard.net/rss.xml
Selector: body

Slim Application Error

The application could not run because of the following error:
Details
Type: TypeError
Message: Argument 1 passed to PHPHtmlParser\Dom\Tag::getAttribute() must be of the type string, int given, called in /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Tag.php on line 328
File: /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Tag.php
Line: 291
Trace

#0 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Tag.php(328): PHPHtmlParser\Dom\Tag->getAttribute(12)
#1 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Node/HtmlNode.php(162): PHPHtmlParser\Dom\Tag->makeOpeningTag()
#2 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Node/HtmlNode.php(108): PHPHtmlParser\Dom\Node\HtmlNode->outerHtml()
#3 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Node/HtmlNode.php(169): PHPHtmlParser\Dom\Node\HtmlNode->innerHtml()
#4 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Node/HtmlNode.php(108): PHPHtmlParser\Dom\Node\HtmlNode->outerHtml()
#5 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Node/HtmlNode.php(169): PHPHtmlParser\Dom\Node\HtmlNode->innerHtml()
#6 /var/www/rssextender/vendor/paquettg/php-html-parser/src/PHPHtmlParser/Dom/Node/AbstractNode.php(134): PHPHtmlParser\Dom\Node\HtmlNode->outerHtml()
#7 /var/www/rssextender/src/Processor/FeedProcessor.php(177): PHPHtmlParser\Dom\Node\AbstractNode->__toString()
#8 /var/www/rssextender/src/Processor/FeedProcessor.php(134): ArthurHoaro\RssExtender\Processor\FeedProcessor->applyPseudoClass(Array, Array)
#9 /var/www/rssextender/src/Processor/FeedProcessor.php(109): ArthurHoaro\RssExtender\Processor\FeedProcessor->retrieveDescription(Object(GuzzleHttp\Client), 'http://fabiensa...')
#10 /var/www/rssextender/src/Processor/FeedProcessor.php(89): ArthurHoaro\RssExtender\Processor\FeedProcessor->retrieveItem(Object(GuzzleHttp\Client), Object(FeedIo\Feed\Item))
#11 /var/www/rssextender/src/Processor/FeedProcessor.php(92): ArthurHoaro\RssExtender\Processor\FeedProcessor->ArthurHoaro\RssExtender\Processor\{closure}()
#12 /var/www/rssextender/vendor/symfony/cache/LockRegistry.php(99): ArthurHoaro\RssExtender\Processor\FeedProcessor->ArthurHoaro\RssExtender\Processor\{closure}(Object(Symfony\Component\Cache\CacheItem), true)
#13 /var/www/rssextender/vendor/symfony/cache/Traits/ContractsTrait.php(88): Symfony\Component\Cache\LockRegistry::compute(Object(Closure), Object(Symfony\Component\Cache\CacheItem), true, Object(Symfony\Component\Cache\Adapter\FilesystemAdapter), Object(Closure), NULL)
#14 /var/www/rssextender/vendor/symfony/cache-contracts/CacheTrait.php(70): Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits\{closure}(Object(Symfony\Component\Cache\CacheItem), true)
#15 /var/www/rssextender/vendor/symfony/cache/Traits/ContractsTrait.php(95): Symfony\Component\Cache\Adapter\AbstractAdapter->doGet(Object(Symfony\Component\Cache\Adapter\FilesystemAdapter), 'b703a4934bfae03...', Object(Closure), 1, Array, NULL)
#16 /var/www/rssextender/vendor/symfony/cache-contracts/CacheTrait.php(33): Symfony\Component\Cache\Adapter\AbstractAdapter->doGet(Object(Symfony\Component\Cache\Adapter\FilesystemAdapter), 'b703a4934bfae03...', Object(Closure), 1, Array)
#17 /var/www/rssextender/src/Processor/FeedProcessor.php(92): Symfony\Component\Cache\Adapter\AbstractAdapter->get('b703a4934bfae03...', Object(Closure))
#18 /var/www/rssextender/src/Processor/FeedProcessor.php(72): ArthurHoaro\RssExtender\Processor\FeedProcessor->processItems(Object(FeedIo\Reader\Result), true)
#19 /var/www/rssextender/src/routes.php(34): ArthurHoaro\RssExtender\Processor\FeedProcessor->read(true)
#20 [internal function]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#21 /var/www/rssextender/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#22 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#23 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#24 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#25 /var/www/rssextender/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#26 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#27 /var/www/rssextender/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#28 /var/www/rssextender/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#29 /var/www/rssextender/public/index.php(34): Slim\App->run()
#30 {main}

cURL error 60: SSL certificate problem: unable to get local issuer certificate

https://rssextender.hoa.ro/?feed=https://geobert.fr/rss.xml

Slim Application Error

The application could not run because of the following error:
Details
Type: FeedIo\Reader\ReadErrorException
Message: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
File: /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/Reader.php
Line: 130
Trace

#0 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/FeedIo.php(323): FeedIo\Reader->read('https://geobert...', Object(FeedIo\Feed), Object(DateTime))
#1 /var/www/rssextender/src/Processor/FeedProcessor.php(52): FeedIo\FeedIo->read('https://geobert...')
#2 /var/www/rssextender/src/routes.php(34): ArthurHoaro\RssExtender\Processor\FeedProcessor->read(true)
#3 [internal function]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#4 /var/www/rssextender/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#5 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#6 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#7 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#8 /var/www/rssextender/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#9 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#10 /var/www/rssextender/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#11 /var/www/rssextender/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#12 /var/www/rssextender/public/index.php(34): Slim\App->run()
#13 {main}

Previous exception
Type: GuzzleHttp\Exception\RequestException
Message: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
File: /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
Line: 201
Trace

#0 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#4 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#5 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(37): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#6 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Middleware.php(29): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#7 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(70): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#8 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Middleware.php(59): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#9 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/HandlerStack.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#10 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Client.php(351): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#11 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Client.php(162): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array)
#12 /var/www/rssextender/vendor/guzzlehttp/guzzle/src/Client.php(182): GuzzleHttp\Client->requestAsync('get', Object(GuzzleHttp\Psr7\Uri), Array)
#13 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/Adapter/Guzzle/Client.php(75): GuzzleHttp\Client->request('get', 'https://geobert...', Array)
#14 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/Reader.php(124): FeedIo\Adapter\Guzzle\Client->getResponse('https://geobert...', Object(DateTime))
#15 /var/www/rssextender/vendor/debril/feed-io/src/FeedIo/FeedIo.php(323): FeedIo\Reader->read('https://geobert...', Object(FeedIo\Feed), Object(DateTime))
#16 /var/www/rssextender/src/Processor/FeedProcessor.php(52): FeedIo\FeedIo->read('https://geobert...')
#17 /var/www/rssextender/src/routes.php(34): ArthurHoaro\RssExtender\Processor\FeedProcessor->read(true)
#18 [internal function]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#19 /var/www/rssextender/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#20 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#21 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#22 /var/www/rssextender/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#23 /var/www/rssextender/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#24 /var/www/rssextender/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#25 /var/www/rssextender/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#26 /var/www/rssextender/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#27 /var/www/rssextender/public/index.php(34): Slim\App->run()
#28 {main}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.