From 8241180c6ce0cb19255d70a3394f891e08182542 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Tue, 27 Jan 2015 09:31:40 +0100 Subject: dont use picofeed submodule --- Makefile | 5 + vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 10 +- vendor/composer/installed.json | 2 +- vendor/fguillot/picofeed | 1 - vendor/fguillot/picofeed/.gitignore | 2 + vendor/fguillot/picofeed/.travis.yml | 12 + vendor/fguillot/picofeed/README.markdown | 67 + vendor/fguillot/picofeed/UNLICENSE | 24 + vendor/fguillot/picofeed/composer.json | 19 + vendor/fguillot/picofeed/docs/config.markdown | 286 + vendor/fguillot/picofeed/docs/debugging.markdown | 102 + vendor/fguillot/picofeed/docs/exceptions.markdown | 28 + vendor/fguillot/picofeed/docs/favicon.markdown | 96 + .../fguillot/picofeed/docs/feed-creation.markdown | 74 + .../fguillot/picofeed/docs/feed-parsing.markdown | 226 + vendor/fguillot/picofeed/docs/grabber.markdown | 136 + vendor/fguillot/picofeed/docs/image-proxy.markdown | 67 + .../fguillot/picofeed/docs/installation.markdown | 68 + vendor/fguillot/picofeed/docs/opml-export.markdown | 46 + vendor/fguillot/picofeed/docs/opml-import.markdown | 19 + vendor/fguillot/picofeed/docs/tests.markdown | 14 + .../picofeed/lib/PicoFeed/Client/Client.php | 692 ++ .../lib/PicoFeed/Client/ClientException.php | 16 + .../fguillot/picofeed/lib/PicoFeed/Client/Curl.php | 272 + .../picofeed/lib/PicoFeed/Client/Grabber.php | 535 + .../picofeed/lib/PicoFeed/Client/HttpHeaders.php | 79 + .../Client/InvalidCertificateException.php | 13 + .../lib/PicoFeed/Client/InvalidUrlException.php | 13 + .../lib/PicoFeed/Client/MaxRedirectException.php | 13 + .../lib/PicoFeed/Client/MaxSizeException.php | 13 + .../picofeed/lib/PicoFeed/Client/Stream.php | 181 + .../lib/PicoFeed/Client/TimeoutException.php | 13 + .../fguillot/picofeed/lib/PicoFeed/Client/Url.php | 284 + .../picofeed/lib/PicoFeed/Config/Config.php | 94 + .../picofeed/lib/PicoFeed/Encoding/Encoding.php | 167 + .../picofeed/lib/PicoFeed/Filter/Attribute.php | 658 ++ .../picofeed/lib/PicoFeed/Filter/Filter.php | 131 + .../fguillot/picofeed/lib/PicoFeed/Filter/Html.php | 203 + .../fguillot/picofeed/lib/PicoFeed/Filter/Tag.php | 173 + .../picofeed/lib/PicoFeed/Logging/Logger.php | 116 + .../fguillot/picofeed/lib/PicoFeed/Parser/Atom.php | 336 + .../picofeed/lib/PicoFeed/Parser/DateParser.php | 109 + .../fguillot/picofeed/lib/PicoFeed/Parser/Feed.php | 238 + .../fguillot/picofeed/lib/PicoFeed/Parser/Item.php | 231 + .../lib/PicoFeed/Parser/MalformedXmlException.php | 13 + .../picofeed/lib/PicoFeed/Parser/Parser.php | 567 + .../lib/PicoFeed/Parser/ParserException.php | 16 + .../picofeed/lib/PicoFeed/Parser/Rss10.php | 77 + .../picofeed/lib/PicoFeed/Parser/Rss20.php | 299 + .../picofeed/lib/PicoFeed/Parser/Rss91.php | 13 + .../picofeed/lib/PicoFeed/Parser/Rss92.php | 13 + .../picofeed/lib/PicoFeed/Parser/XmlParser.php | 261 + .../picofeed/lib/PicoFeed/PicoFeedException.php | 15 + .../picofeed/lib/PicoFeed/Reader/Favicon.php | 216 + .../picofeed/lib/PicoFeed/Reader/Reader.php | 211 + .../lib/PicoFeed/Reader/ReaderException.php | 16 + .../Reader/SubscriptionNotFoundException.php | 13 + .../Reader/UnsupportedFeedFormatException.php | 13 + .../lib/PicoFeed/Rules/.blog.lemonde.fr.php | 10 + .../lib/PicoFeed/Rules/.blogs.nytimes.com.php | 11 + .../picofeed/lib/PicoFeed/Rules/.igen.fr.php | 9 + .../picofeed/lib/PicoFeed/Rules/.nytimes.com.php | 8 + .../picofeed/lib/PicoFeed/Rules/.phoronix.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/.slate.com.php | 16 + .../lib/PicoFeed/Rules/.theguardian.com.php | 10 + .../picofeed/lib/PicoFeed/Rules/.wikipedia.org.php | 25 + .../picofeed/lib/PicoFeed/Rules/.wired.com.php | 19 + .../picofeed/lib/PicoFeed/Rules/.wsj.com.php | 11 + .../picofeed/lib/PicoFeed/Rules/01net.com.php | 15 + .../lib/PicoFeed/Rules/allgemeine-zeitung.de.php | 20 + .../picofeed/lib/PicoFeed/Rules/blog.fefe.de.php | 9 + .../picofeed/lib/PicoFeed/Rules/bunicomic.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/consomac.fr.php | 9 + .../lib/PicoFeed/Rules/degroupnews.com.php | 10 + .../picofeed/lib/PicoFeed/Rules/derstandard.at.php | 10 + .../lib/PicoFeed/Rules/distrowatch.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/dozodomo.com.php | 11 + .../picofeed/lib/PicoFeed/Rules/explosm.net.php | 9 + .../lib/PicoFeed/Rules/fastcodesign.com.php | 9 + .../lib/PicoFeed/Rules/fastcoexist.com.php | 9 + .../lib/PicoFeed/Rules/fastcompany.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/ffworld.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/github.com.php | 10 + .../picofeed/lib/PicoFeed/Rules/golem.de.php | 8 + .../picofeed/lib/PicoFeed/Rules/heise.de.php | 7 + .../lib/PicoFeed/Rules/huffingtonpost.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/ing.dk.php | 8 + .../lib/PicoFeed/Rules/journaldugeek.com.php | 10 + .../picofeed/lib/PicoFeed/Rules/kanpai.fr.php | 9 + .../lib/PicoFeed/Rules/karriere.jobfinder.dk.php | 8 + .../picofeed/lib/PicoFeed/Rules/lejapon.fr.php | 14 + .../lib/PicoFeed/Rules/lesjoiesducode.fr.php | 9 + .../picofeed/lib/PicoFeed/Rules/lifehacker.com.php | 14 + .../fguillot/picofeed/lib/PicoFeed/Rules/lists.php | 9 + .../picofeed/lib/PicoFeed/Rules/macg.co.php | 9 + .../picofeed/lib/PicoFeed/Rules/marc.info.php | 9 + .../picofeed/lib/PicoFeed/Rules/medium.com.php | 9 + .../lib/PicoFeed/Rules/monwindowsphone.com.php | 9 + .../lib/PicoFeed/Rules/openrightsgroup.org.php | 16 + .../picofeed/lib/PicoFeed/Rules/pastebin.com.php | 9 + .../lib/PicoFeed/Rules/plus.google.com.php | 7 + .../lib/PicoFeed/Rules/rue89.nouvelobs.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/sitepoint.com.php | 9 + .../lib/PicoFeed/Rules/smallhousebliss.com.php | 17 + .../picofeed/lib/PicoFeed/Rules/spiegel.de.php | 7 + .../picofeed/lib/PicoFeed/Rules/techcrunch.com.php | 13 + .../picofeed/lib/PicoFeed/Rules/treehugger.com.php | 10 + .../picofeed/lib/PicoFeed/Rules/undeadly.org.php | 11 + .../picofeed/lib/PicoFeed/Rules/version2.dk.php | 8 + .../picofeed/lib/PicoFeed/Rules/www.bbc.co.uk.php | 22 + .../picofeed/lib/PicoFeed/Rules/www.bdgest.com.php | 11 + .../lib/PicoFeed/Rules/www.businessweek.com.php | 11 + .../picofeed/lib/PicoFeed/Rules/www.cnn.com.php | 22 + .../lib/PicoFeed/Rules/www.egscomics.com.php | 8 + .../picofeed/lib/PicoFeed/Rules/www.forbes.com.php | 16 + .../lib/PicoFeed/Rules/www.futura-sciences.com.php | 15 + .../picofeed/lib/PicoFeed/Rules/www.lemonde.fr.php | 9 + .../picofeed/lib/PicoFeed/Rules/www.lepoint.fr.php | 16 + .../lib/PicoFeed/Rules/www.mac4ever.com.php | 9 + .../lib/PicoFeed/Rules/www.nextinpact.com.php | 9 + .../picofeed/lib/PicoFeed/Rules/www.npr.org.php | 15 + .../lib/PicoFeed/Rules/www.numerama.com.php | 11 + .../lib/PicoFeed/Rules/www.pcinpact.com.php | 9 + .../lib/PicoFeed/Rules/www.pseudo-sciences.org.php | 12 + .../picofeed/lib/PicoFeed/Rules/www.slate.fr.php | 17 + .../lib/PicoFeed/Rules/www.universfreebox.com.php | 11 + .../picofeed/lib/PicoFeed/Rules/xkcd.com.php | 9 + .../picofeed/lib/PicoFeed/Serialization/Export.php | 132 + .../picofeed/lib/PicoFeed/Serialization/Import.php | 171 + .../picofeed/lib/PicoFeed/Syndication/Atom.php | 220 + .../picofeed/lib/PicoFeed/Syndication/Rss20.php | 207 + .../picofeed/lib/PicoFeed/Syndication/Writer.php | 104 + vendor/fguillot/picofeed/phpunit.xml | 7 + vendor/fguillot/picofeed/picofeed | 124 + .../fguillot/picofeed/tests/Client/ClientTest.php | 110 + vendor/fguillot/picofeed/tests/Client/CurlTest.php | 54 + .../fguillot/picofeed/tests/Client/GrabberTest.php | 67 + .../picofeed/tests/Client/HttpHeadersTest.php | 19 + .../fguillot/picofeed/tests/Client/StreamTest.php | 65 + vendor/fguillot/picofeed/tests/Client/UrlTest.php | 292 + .../picofeed/tests/Filter/AttributeFilterTest.php | 175 + .../fguillot/picofeed/tests/Filter/FilterTest.php | 141 + .../picofeed/tests/Filter/HtmlFilterTest.php | 168 + .../picofeed/tests/Filter/TagFilterTest.php | 33 + .../picofeed/tests/Parser/AtomParserTest.php | 253 + .../picofeed/tests/Parser/DateParserTest.php | 48 + vendor/fguillot/picofeed/tests/Parser/FeedTest.php | 24 + vendor/fguillot/picofeed/tests/Parser/ItemTest.php | 24 + .../fguillot/picofeed/tests/Parser/ParserTest.php | 36 + .../picofeed/tests/Parser/Rss10ParserTest.php | 119 + .../picofeed/tests/Parser/Rss20ParserTest.php | 267 + .../picofeed/tests/Parser/Rss91ParserTest.php | 31 + .../picofeed/tests/Parser/Rss92ParserTest.php | 29 + .../picofeed/tests/Parser/XmlParserTest.php | 105 + .../fguillot/picofeed/tests/Reader/FaviconTest.php | 170 + .../fguillot/picofeed/tests/Reader/ReaderTest.php | 246 + .../picofeed/tests/Serialization/ExportTest.php | 70 + .../picofeed/tests/Serialization/ImportTest.php | 61 + .../picofeed/tests/Syndication/AtomWriterTest.php | 90 + .../picofeed/tests/Syndication/Rss20WriterTest.php | 85 + vendor/fguillot/picofeed/tests/fixtures/atom.xml | 477 + .../picofeed/tests/fixtures/atomsample.xml | 20 + .../fguillot/picofeed/tests/fixtures/bbc_urdu.xml | 2087 ++++ .../picofeed/tests/fixtures/biertaucher.xml | 7198 +++++++++++++ .../picofeed/tests/fixtures/cercle.psy.xml | 58 + .../picofeed/tests/fixtures/debug_show.xml | 1073 ++ vendor/fguillot/picofeed/tests/fixtures/ezrss.it | 496 + .../tests/fixtures/fanboys.fm_episodes.all.mp3.rss | 10426 +++++++++++++++++++ .../picofeed/tests/fixtures/fulltextrss.xml | 88 + .../fixtures/geekstammtisch.de_episodes.mp3.rss | 9428 +++++++++++++++++ .../picofeed/tests/fixtures/google-reader.opml | 78 + .../fguillot/picofeed/tests/fixtures/groovehq.xml | 1767 ++++ .../picofeed/tests/fixtures/grotte_barbu.xml | 396 + .../fguillot/picofeed/tests/fixtures/hamakor.xml | 527 + .../tests/fixtures/html4_head_stripped_page.html | 435 + .../picofeed/tests/fixtures/html4_page.html | 486 + .../tests/fixtures/html_head_stripped_page.html | 804 ++ .../picofeed/tests/fixtures/html_page.html | 967 ++ .../fguillot/picofeed/tests/fixtures/ibash.ru.xml | 359 + .../picofeed/tests/fixtures/jeux-linux.fr.xml | 924 ++ .../fguillot/picofeed/tests/fixtures/lagrange.xml | 1986 ++++ .../picofeed/tests/fixtures/lincoln_loop.xml | 1150 ++ .../picofeed/tests/fixtures/newsbeuter.opml | 43 + .../picofeed/tests/fixtures/next_inpact_full.xml | 2435 +++++ .../fguillot/picofeed/tests/fixtures/pcinpact.xml | 1 + .../picofeed/tests/fixtures/planete-jquery.xml | 443 + .../fguillot/picofeed/tests/fixtures/podbean.xml | 1596 +++ .../picofeed/tests/fixtures/radio-france.xml | 946 ++ .../fguillot/picofeed/tests/fixtures/resorts.xml | 169 + vendor/fguillot/picofeed/tests/fixtures/rss20.xml | 300 + .../picofeed/tests/fixtures/rss2sample.xml | 41 + .../fguillot/picofeed/tests/fixtures/rss_0.91.xml | 50 + .../fguillot/picofeed/tests/fixtures/rss_0.92.xml | 103 + vendor/fguillot/picofeed/tests/fixtures/rue89.xml | 2 + .../fguillot/picofeed/tests/fixtures/sametmax.xml | 1067 ++ .../picofeed/tests/fixtures/subscriptionList.opml | 1 + .../picofeed/tests/fixtures/tinytinyrss.opml | 13 + .../picofeed/tests/fixtures/univers_freebox.xml | 30 + .../picofeed/tests/fixtures/womensweardaily.xml | 63 + .../fguillot/picofeed/tests/fixtures/xakep.ru.xml | 245 + .../fguillot/picofeed/tests/fixtures/youtube.xml | 979 ++ .../picofeed/tests/fixtures/zoot_egkty.xml | 177 + 203 files changed, 62076 insertions(+), 8 deletions(-) delete mode 160000 vendor/fguillot/picofeed create mode 100644 vendor/fguillot/picofeed/.gitignore create mode 100644 vendor/fguillot/picofeed/.travis.yml create mode 100644 vendor/fguillot/picofeed/README.markdown create mode 100644 vendor/fguillot/picofeed/UNLICENSE create mode 100644 vendor/fguillot/picofeed/composer.json create mode 100644 vendor/fguillot/picofeed/docs/config.markdown create mode 100644 vendor/fguillot/picofeed/docs/debugging.markdown create mode 100644 vendor/fguillot/picofeed/docs/exceptions.markdown create mode 100644 vendor/fguillot/picofeed/docs/favicon.markdown create mode 100644 vendor/fguillot/picofeed/docs/feed-creation.markdown create mode 100644 vendor/fguillot/picofeed/docs/feed-parsing.markdown create mode 100644 vendor/fguillot/picofeed/docs/grabber.markdown create mode 100644 vendor/fguillot/picofeed/docs/image-proxy.markdown create mode 100644 vendor/fguillot/picofeed/docs/installation.markdown create mode 100644 vendor/fguillot/picofeed/docs/opml-export.markdown create mode 100644 vendor/fguillot/picofeed/docs/opml-import.markdown create mode 100644 vendor/fguillot/picofeed/docs/tests.markdown create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/Client.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/ClientException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/Curl.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/Grabber.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/InvalidCertificateException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/InvalidUrlException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/MaxRedirectException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/MaxSizeException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/Stream.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/TimeoutException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Client/Url.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Config/Config.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Filter/Attribute.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Filter/Filter.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Filter/Html.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Logging/Logger.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/DateParser.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Feed.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Item.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/MalformedXmlException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Parser.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/ParserException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss10.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss20.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss91.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss92.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Parser/XmlParser.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/PicoFeedException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Reader/Favicon.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Reader/Reader.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Reader/ReaderException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Reader/SubscriptionNotFoundException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Reader/UnsupportedFeedFormatException.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.blog.lemonde.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.blogs.nytimes.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.igen.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.nytimes.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.phoronix.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.slate.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.theguardian.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.wikipedia.org.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.wired.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/.wsj.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/01net.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/allgemeine-zeitung.de.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/blog.fefe.de.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/bunicomic.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/consomac.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/degroupnews.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/derstandard.at.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/distrowatch.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/dozodomo.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/explosm.net.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/fastcodesign.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/fastcoexist.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/fastcompany.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/ffworld.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/github.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/golem.de.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/heise.de.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/huffingtonpost.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/ing.dk.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/journaldugeek.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/kanpai.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/karriere.jobfinder.dk.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/lejapon.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/lesjoiesducode.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/lifehacker.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/lists.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/macg.co.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/marc.info.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/medium.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/monwindowsphone.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/openrightsgroup.org.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/pastebin.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/plus.google.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/rue89.nouvelobs.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/sitepoint.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/smallhousebliss.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/spiegel.de.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/techcrunch.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/treehugger.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/undeadly.org.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/version2.dk.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.bbc.co.uk.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.bdgest.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.businessweek.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.cnn.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.egscomics.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.forbes.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.futura-sciences.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.lemonde.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.lepoint.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.mac4ever.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.nextinpact.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.npr.org.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.numerama.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.pcinpact.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.pseudo-sciences.org.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.slate.fr.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.universfreebox.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Rules/xkcd.com.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Serialization/Export.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Serialization/Import.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Syndication/Atom.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Syndication/Rss20.php create mode 100644 vendor/fguillot/picofeed/lib/PicoFeed/Syndication/Writer.php create mode 100644 vendor/fguillot/picofeed/phpunit.xml create mode 100755 vendor/fguillot/picofeed/picofeed create mode 100644 vendor/fguillot/picofeed/tests/Client/ClientTest.php create mode 100644 vendor/fguillot/picofeed/tests/Client/CurlTest.php create mode 100644 vendor/fguillot/picofeed/tests/Client/GrabberTest.php create mode 100644 vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php create mode 100644 vendor/fguillot/picofeed/tests/Client/StreamTest.php create mode 100644 vendor/fguillot/picofeed/tests/Client/UrlTest.php create mode 100644 vendor/fguillot/picofeed/tests/Filter/AttributeFilterTest.php create mode 100644 vendor/fguillot/picofeed/tests/Filter/FilterTest.php create mode 100644 vendor/fguillot/picofeed/tests/Filter/HtmlFilterTest.php create mode 100644 vendor/fguillot/picofeed/tests/Filter/TagFilterTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/DateParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/FeedTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/ItemTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/ParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/Rss10ParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/Rss91ParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/Rss92ParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php create mode 100644 vendor/fguillot/picofeed/tests/Reader/FaviconTest.php create mode 100644 vendor/fguillot/picofeed/tests/Reader/ReaderTest.php create mode 100644 vendor/fguillot/picofeed/tests/Serialization/ExportTest.php create mode 100644 vendor/fguillot/picofeed/tests/Serialization/ImportTest.php create mode 100644 vendor/fguillot/picofeed/tests/Syndication/AtomWriterTest.php create mode 100644 vendor/fguillot/picofeed/tests/Syndication/Rss20WriterTest.php create mode 100644 vendor/fguillot/picofeed/tests/fixtures/atom.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/atomsample.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/bbc_urdu.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/biertaucher.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/cercle.psy.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/debug_show.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/ezrss.it create mode 100644 vendor/fguillot/picofeed/tests/fixtures/fanboys.fm_episodes.all.mp3.rss create mode 100644 vendor/fguillot/picofeed/tests/fixtures/fulltextrss.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/geekstammtisch.de_episodes.mp3.rss create mode 100644 vendor/fguillot/picofeed/tests/fixtures/google-reader.opml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/groovehq.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/grotte_barbu.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/hamakor.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/html4_head_stripped_page.html create mode 100644 vendor/fguillot/picofeed/tests/fixtures/html4_page.html create mode 100644 vendor/fguillot/picofeed/tests/fixtures/html_head_stripped_page.html create mode 100644 vendor/fguillot/picofeed/tests/fixtures/html_page.html create mode 100644 vendor/fguillot/picofeed/tests/fixtures/ibash.ru.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/jeux-linux.fr.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/lagrange.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/lincoln_loop.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/newsbeuter.opml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/next_inpact_full.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/pcinpact.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/planete-jquery.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/podbean.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/radio-france.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/resorts.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/rss20.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/rss2sample.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/rss_0.91.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/rss_0.92.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/rue89.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/sametmax.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/subscriptionList.opml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/tinytinyrss.opml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/univers_freebox.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/womensweardaily.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/xakep.ru.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/youtube.xml create mode 100644 vendor/fguillot/picofeed/tests/fixtures/zoot_egkty.xml diff --git a/Makefile b/Makefile index fac479e31..13bbd4868 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,11 @@ all: dist clean: rm -rf $(build_dir) +update-composer: + rm -f composer.lock + git rm -r vendor + composer install --prefer-dist + dist: clean mkdir -p $(source_dir) tar cvzf $(source_dir)/$(package_name).tar.gz $(project_dir) \ diff --git a/vendor/autoload.php b/vendor/autoload.php index 593f1e80a..4ec78c610 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer' . '/autoload_real.php'; -return ComposerAutoloaderInit2599c36956705be2b7a925207a083614::getLoader(); +return ComposerAutoloaderInitd76dfeebb5ddb82dad6b87cf02d1b308::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index ccbca8b9e..d933a9ab8 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit2599c36956705be2b7a925207a083614 +class ComposerAutoloaderInitd76dfeebb5ddb82dad6b87cf02d1b308 { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInit2599c36956705be2b7a925207a083614 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit2599c36956705be2b7a925207a083614', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitd76dfeebb5ddb82dad6b87cf02d1b308', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit2599c36956705be2b7a925207a083614', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitd76dfeebb5ddb82dad6b87cf02d1b308', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; array_push($includePaths, get_include_path()); @@ -46,14 +46,14 @@ class ComposerAutoloaderInit2599c36956705be2b7a925207a083614 $includeFiles = require __DIR__ . '/autoload_files.php'; foreach ($includeFiles as $file) { - composerRequire2599c36956705be2b7a925207a083614($file); + composerRequired76dfeebb5ddb82dad6b87cf02d1b308($file); } return $loader; } } -function composerRequire2599c36956705be2b7a925207a083614($file) +function composerRequired76dfeebb5ddb82dad6b87cf02d1b308($file) { require $file; } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index a0c3c91f3..f15987f72 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -66,7 +66,7 @@ }, "time": "2015-01-27 01:56:40", "type": "library", - "installation-source": "source", + "installation-source": "dist", "autoload": { "psr-0": { "PicoFeed": "lib/" diff --git a/vendor/fguillot/picofeed b/vendor/fguillot/picofeed deleted file mode 160000 index 0a1d0d395..000000000 --- a/vendor/fguillot/picofeed +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0a1d0d3950f7f047dc8fb1d80aa6296e15f306d0 diff --git a/vendor/fguillot/picofeed/.gitignore b/vendor/fguillot/picofeed/.gitignore new file mode 100644 index 000000000..b0ef0680a --- /dev/null +++ b/vendor/fguillot/picofeed/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +vendor/ \ No newline at end of file diff --git a/vendor/fguillot/picofeed/.travis.yml b/vendor/fguillot/picofeed/.travis.yml new file mode 100644 index 000000000..0c3d0fe55 --- /dev/null +++ b/vendor/fguillot/picofeed/.travis.yml @@ -0,0 +1,12 @@ +language: php + +php: + - "5.6" + - "5.5" + - "5.4" + - "5.3" + +before_script: wget https://phar.phpunit.de/phpunit.phar +script: + - composer dump-autoload + - php phpunit.phar diff --git a/vendor/fguillot/picofeed/README.markdown b/vendor/fguillot/picofeed/README.markdown new file mode 100644 index 000000000..ea18adbb6 --- /dev/null +++ b/vendor/fguillot/picofeed/README.markdown @@ -0,0 +1,67 @@ +PicoFeed +======== + +PicoFeed was originally developed for [Miniflux](http://miniflux.net), a minimalist and open source news reader. + +However, this library can be used inside any project. +PicoFeed is tested with a lot of different feeds and it's simple and easy to use. + +[![Build Status](https://travis-ci.org/fguillot/picoFeed.svg?branch=master)](https://travis-ci.org/fguillot/picoFeed) + +[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/fguillot/picoFeed/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/fguillot/picoFeed/?branch=master) + +Features +-------- + +- Simple and fast +- Feed parser for Atom 1.0 and RSS 0.91, 0.92, 1.0 and 2.0 +- Feed writer for Atom 1.0 and RSS 2.0 +- Favicon fetcher +- Import/Export OPML subscriptions +- Content filter: HTML cleanup, remove pixel trackers and Ads +- Multiple HTTP client adapters: cURL or Stream Context +- Proxy support +- Content grabber: download from the original website the full content +- Enclosure detection +- RTL languages support +- License: Unlicense + +Requirements +------------ + +- PHP >= 5.3 +- libxml >= 2.7 +- XML PHP extensions: DOM and SimpleXML +- cURL or Stream Context (`allow_url_fopen=On`) + +Authors +------- + +- Original author: [Frédéric Guillot](http://fredericguillot.com/) +- Major Contributors: + - [Bernhard Posselt](https://github.com/Raydiation) + - [David Pennington](https://github.com/Xeoncross) + - [Mathias Kresin](https://github.com/mkresin) + +Real world usage +---------------- + +- [AnythingNew](http://anythingnew.co) +- [Miniflux](http://miniflux.net) +- [Owncloud News](https://github.com/owncloud/news) + +Documentation +------------- + +- [Installation](docs/installation.markdown) +- [Running unit tests](docs/tests.markdown) +- [Feed parsing](docs/feed-parsing.markdown) +- [Feed creation](docs/feed-creation.markdown) +- [Favicon fetcher](docs/favicon.markdown) +- [OPML file importation](docs/opml-import.markdown) +- [OPML file exportation](docs/opml-export.markdown) +- [Image proxy](docs/image-proxy.markdown) (avoid SSL mixed content warnings) +- [Web scraping](docs/grabber.markdown) +- [Exceptions](docs/exceptions.markdown) +- [Debugging](docs/debugging.markdown) +- [Configuration](docs/config.markdown) diff --git a/vendor/fguillot/picofeed/UNLICENSE b/vendor/fguillot/picofeed/UNLICENSE new file mode 100644 index 000000000..68a49daad --- /dev/null +++ b/vendor/fguillot/picofeed/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/vendor/fguillot/picofeed/composer.json b/vendor/fguillot/picofeed/composer.json new file mode 100644 index 000000000..bc842f3b1 --- /dev/null +++ b/vendor/fguillot/picofeed/composer.json @@ -0,0 +1,19 @@ +{ + "name": "fguillot/picofeed", + "description": "Modern library to write or read feeds (RSS/Atom)", + "homepage": "http://fguillot.github.io/picoFeed", + "type": "library", + "license": "Unlicense", + "authors": [ + { + "name": "Frédéric Guillot", + "homepage": "http://fredericguillot.com" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-0": {"PicoFeed": "lib/"} + } +} diff --git a/vendor/fguillot/picofeed/docs/config.markdown b/vendor/fguillot/picofeed/docs/config.markdown new file mode 100644 index 000000000..75546abd1 --- /dev/null +++ b/vendor/fguillot/picofeed/docs/config.markdown @@ -0,0 +1,286 @@ +Configuration +============= + +How to use the Config object +---------------------------- + +To change the default parameters, you have to use the Config class. +Create a new instance and pass it to the Reader object like that: + +```php +use PicoFeed\Reader\Reader; +use PicoFeed\Config\Config; + +$config = new Config; +$config->setClientUserAgent('My custom RSS Reader') + ->setProxyHostname('127.0.0.1') + ->setProxyPort(8118); + +$reader = new Reader($config); +... +``` + +HTTP Client parameters +---------------------- + +### Connection timeout + +- Method name: `setClientTimeout()` +- Default value: 10 seconds +- Argument value: number of seconds (integer) + +```php +$config->setClientTimeout(20); // 20 seconds +``` + +### User Agent + +- Method name: `setClientUserAgent()` +- Default value: `PicoFeed (https://github.com/fguillot/picoFeed)` +- Argument value: string + +```php +$config->setClientUserAgent('My RSS reader'); +``` + +### Maximum HTTP redirections + +- Method name: `setMaxRedirections()` +- Default value: 5 +- Argument value: integer + +```php +$config->setMaxRedirections(10); +``` + +### Maximum HTTP body response size + +- Method name: `setMaxBodySize()` +- Default value: 2097152 (2MB) +- Argument value: value in bytes (integer) + +```php +$config->setMaxBodySize(10485760); // 10MB +``` + +### Proxy hostname + +- Method name: `setProxyHostname()` +- Default value: empty +- Argument value: string + +```php +$config->setProxyHostname('proxy.example.org'); +``` + +### Proxy port + +- Method name: `setProxyPort()` +- Default value: 3128 +- Argument value: port number (integer) + +```php +$config->setProxyPort(8118); +``` + +### Proxy username + +- Method name: `setProxyUsername()` +- Default value: empty +- Argument value: string + +```php +$config->setProxyUsername('myuser'); +``` + +### Proxy password + +- Method name: `setProxyPassword()` +- Default value: empty +- Argument value: string + +```php +$config->setProxyPassword('mysecret'); +``` + +Content grabber +--------------- + +### Connection timeout + +- Method name: `setGrabberTimeout()` +- Default value: 10 seconds +- Argument value: number of seconds (integer) + +```php +$config->setGrabberTimeout(20); // 20 seconds +``` + +### User Agent + +- Method name: `setGrabberUserAgent()` +- Default value: `PicoFeed (https://github.com/fguillot/picoFeed)` +- Argument value: string + +```php +$config->setGrabberUserAgent('My content scraper'); +``` + +Parser +------ + +### Hash algorithm used for item id generation + +- Method name: `setParserHashAlgo()` +- Default value: `sha256` +- Argument value: any value returned by the function `hash_algos()` (string) +- See: http://php.net/hash_algos + +```php +$config->setParserHashAlgo('sha1'); +``` + +### Disable item content filtering + +- Method name: `setContentFiltering()` +- Default value: true (filtering is enabled by default) +- Argument value: boolean + +```php +$config->setContentFiltering(false); +``` + +### Timezone + +- Method name: `setTimezone()` +- Default value: UTC +- Argument value: See https://php.net/manual/en/timezones.php (string) +- Note: define the timezone for items/feeds + +```php +$config->setTimezone('Europe/Paris'); +``` + +Logging +------- + +### Timezone + +- Method name: `setTimezone()` +- Default value: UTC +- Argument value: See https://php.net/manual/en/timezones.php (string) +- Note: define the timezone for the logging class + +```php +$config->setTimezone('Europe/Paris'); +``` + +Filter +------ + +### Set the iframe whitelist (allowed iframe sources) + +- Method name: `setFilterIframeWhitelist()` +- Default value: See the Filter class source code +- Argument value: array + +```php +$config->setFilterIframeWhitelist(['http://www.youtube.com', 'http://www.vimeo.com']); +``` + +### Define HTML integer attributes + +- Method name: `setFilterIntegerAttributes()` +- Default value: See the Filter class source code +- Argument value: array + +```php +$config->setFilterIntegerAttributes(['width', 'height']); +``` + +### Add HTML attributes automatically + +- Method name: `setFilterAttributeOverrides()` +- Default value: See the Filter class source code +- Argument value: array + +```php +$config->setFilterAttributeOverrides(['a' => ['target' => '_blank']); +``` + +### Set the list of required attributes for tags + +- Method name: `setFilterRequiredAttributes()` +- Default value: See the Filter class source code +- Argument value: array +- Note: If the required attributes are not there, the tag is stripped + +```php +$config->setFilterRequiredAttributes(['a' => 'href', 'img' => 'src']); +``` + +### Set the resource blacklist (Ads blocker) + +- Method name: `setFilterMediaBlacklist()` +- Default value: See the Filter class source code +- Argument value: array +- Note: Tags are stripped if they have those URLs + +```php +$config->setFilterMediaBlacklist(['feeds.feedburner.com', 'share.feedsportal.com']); +``` + +### Define which attributes are used for external resources + +- Method name: `setFilterMediaAttributes()` +- Default value: See the Filter class source code +- Argument value: array + +```php +$config->setFilterMediaAttributes(['src', 'href']); +``` + +### Define the scheme whitelist + +- Method name: `setFilterSchemeWhitelist()` +- Default value: See the Filter class source code +- Argument value: array +- See: http://en.wikipedia.org/wiki/URI_scheme + +```php +$config->setFilterSchemeWhitelist(['http://', 'ftp://']); +``` + +### Define the tags and attributes whitelist + +- Method name: `setFilterWhitelistedTags()` +- Default value: See the Filter class source code +- Argument value: array +- Note: Only those tags are allowed everything else is stripped + +```php +$config->setFilterWhitelistedTags(['a' => ['href'], 'img' => ['src', 'title']]); +``` + +### Define a image proxy url + +- Method name: `setFilterImageProxyUrl()` +- Default value: Empty +- Argument value: string + +```php +$config->setFilterImageProxyUrl('http://myproxy.example.org/?url=%s'); +``` + +### Define a image proxy callback + +- Method name: `setFilterImageProxyCallback()` +- Default value: null +- Argument value: Closure + +```php +$config->setFilterImageProxyCallback(function ($image_url) { + $key = hash_hmac('sha1', $image_url, 'secret'); + return 'https://mypublicproxy/'.$key.'/'.urlencode($image_url); +}); +``` \ No newline at end of file diff --git a/vendor/fguillot/picofeed/docs/debugging.markdown b/vendor/fguillot/picofeed/docs/debugging.markdown new file mode 100644 index 000000000..1356e0f72 --- /dev/null +++ b/vendor/fguillot/picofeed/docs/debugging.markdown @@ -0,0 +1,102 @@ +Debugging +========= + +Logging +------- + +PicoFeed can log **in memory** the execution flow, if a feed doesn't work correctly it's easy to see what is wrong. + +### Enable/disable logging + +The logging is **disabled by default** to avoid unnecessary memory usage. + +Enable logging: + +```php +use PicoFeed\Logging\Logger; + +Logger::enable(); + +// or change the flag value + +Logger::$enable = true; +``` + +### Reading messages + +```php +use PicoFeed\Logging\Logger; + +// All messages are stored inside an Array +print_r(Logger::getMessages()); +``` + +You will got an output like that: + +```php +Array +( + [0] => Fetch URL: http://petitcodeur.fr/feed.xml + [1] => Etag: + [2] => Last-Modified: + [3] => cURL total time: 0.711378 + [4] => cURL dns lookup time: 0.001064 + [5] => cURL connect time: 0.100733 + [6] => cURL speed download: 74825 + [7] => HTTP status code: 200 + [8] => HTTP headers: Set-Cookie => start=R2701971637; path=/; expires=Sat, 06-Jul-2013 05:16:33 GMT + [9] => HTTP headers: Date => Sat, 06 Jul 2013 03:55:52 GMT + [10] => HTTP headers: Content-Type => application/xml + [11] => HTTP headers: Content-Length => 53229 + [12] => HTTP headers: Connection => close + [13] => HTTP headers: Server => Apache + [14] => HTTP headers: Last-Modified => Tue, 02 Jul 2013 03:26:02 GMT + [15] => HTTP headers: ETag => "393e79c-cfed-4e07ee78b2680" + [16] => HTTP headers: Accept-Ranges => bytes + .... +) +``` + +### Remove messages + +All messages are stored in memory, if you need to clear them just call the method `Logger::deleteMessages()`: + +```php +Logger::deleteMessages(); +``` + +Command line utility +==================== + +PicoFeed provides a basic command line tool to debug feeds quickly. +The tool is located in the root directory project. + +### Usage + +```bash +$ ./picofeed +Usage: +./picofeed feed # Parse a feed a dump the ouput on stdout +./picofeed debug # Display all logging messages for a feed +./picofeed item # Fetch only one item +./picofeed nofilter # Fetch an item but with no content filtering +``` + +### Example + +```bash +$ ./picofeed debug https://linuxfr.org/ +Exception thrown ===> "Invalid SSL certificate" +Array +( + [0] => [2014-11-08 14:04:14] PicoFeed\Client\Curl Fetch URL: https://linuxfr.org/ + [1] => [2014-11-08 14:04:14] PicoFeed\Client\Curl Etag provided: + [2] => [2014-11-08 14:04:14] PicoFeed\Client\Curl Last-Modified provided: + [3] => [2014-11-08 14:04:16] PicoFeed\Client\Curl cURL total time: 1.850634 + [4] => [2014-11-08 14:04:16] PicoFeed\Client\Curl cURL dns lookup time: 0.00093 + [5] => [2014-11-08 14:04:16] PicoFeed\Client\Curl cURL connect time: 0.115213 + [6] => [2014-11-08 14:04:16] PicoFeed\Client\Curl cURL speed download: 0 + [7] => [2014-11-08 14:04:16] PicoFeed\Client\Curl cURL effective url: https://linuxfr.org/ + [8] => [2014-11-08 14:04:16] PicoFeed\Client\Curl cURL error: SSL certificate problem: Invalid certificate chain +) +``` diff --git a/vendor/fguillot/picofeed/docs/exceptions.markdown b/vendor/fguillot/picofeed/docs/exceptions.markdown new file mode 100644 index 000000000..399ba3ef6 --- /dev/null +++ b/vendor/fguillot/picofeed/docs/exceptions.markdown @@ -0,0 +1,28 @@ +Exceptions +========== + +All exceptions inherits from the standard `Exception` class. + +### Library Exceptions + +- `PicoFeed\PicoFeedException`: Base class exception for the library + +### Client Exceptions + +- `PicoFeed\Client\ClientException`: Base exception class for the Client class +- `PicoFeed\Client\InvalidCertificateException`: Invalid SSL certificate +- `PicoFeed\Client\InvalidUrlException`: Malformed URL, page not found (404), unable to establish a connection +- `PicoFeed\Client\MaxRedirectException`: Maximum of HTTP redirections reached +- `PicoFeed\Client\MaxSizeException`: The response size exceeds to maximum allowed +- `PicoFeed\Client\TimeoutException`: Connection timeout + +### Parser Exceptions + +- `PicoFeed\Parser\ParserException`: Base exception class for the Parser class +- `PicoFeed\Parser\MalformedXmlException`: XML Parser error + +### Reader Exceptions + +- `PicoFeed\Reader\ReaderException`: Base exception class for the Reader +- `PicoFeed\Reader\SubscriptionNotFoundException`: Unable to find a feed for the given website +- `PicoFeed\Reader\UnsupportedFeedFormatException`: Unable to detect the feed format diff --git a/vendor/fguillot/picofeed/docs/favicon.markdown b/vendor/fguillot/picofeed/docs/favicon.markdown new file mode 100644 index 000000000..b5021690d --- /dev/null +++ b/vendor/fguillot/picofeed/docs/favicon.markdown @@ -0,0 +1,96 @@ +Favicon fetcher +=============== + +Find and download the favicon +----------------------------- + +```php +use PicoFeed\Reader\Favicon; + +$favicon = new Favicon; + +// The icon link is https://bits.wikimedia.org/favicon/wikipedia.ico +$icon_link = $favicon->find('https://en.wikipedia.org/'); +$icon_content = $favicon->getContent(); +``` + +PicoFeed will try first to find the favicon from the meta tags and fallback to the `favicon.ico` located in the website's root if nothing is found. + +- `Favicon::find()` returns the favicon absolute url or an empty string if nothing is found. +- `Favicon::getContent()` returns the favicon file content (binary content) + +When the HTML page is parsed, relative links and protocol relative links are converted to absolute url. + +Download a know favicon +----------------------- +It's possible to download a known favicon using the second optional parameter of Favicon::find(). The link to the favicon can be a relative or protocol relative url as well, but it has to be relative to the specified website. + +If the requested favicon could not be found, the HTML of the website is parsed instead, with the fallback to the `favicon.ico` located in the website's root. + +```php +use PicoFeed\Reader\Favicon; + +$favicon = new Favicon; + +$icon_link = $favicon->find('https://en.wikipedia.org/','https://bits.wikimedia.org/favicon/wikipedia.ico'); +$icon_content = $favicon->getContent(); +``` + +Get Favicon file type +--------------------- + +It's possible to fetch the image type, this information come from the Content-Type HTTP header: + +```php +$favicon = new Favicon; +$favicon->find('http://example.net/'); + +echo $favicon->getType(); + +// Will output the content type, by example "image/png" +``` + +Get the Favicon as Data URI +--------------------------- + +You can also get the whole image as Data URI. +It's useful if you want to store the icon in your database and avoid too many HTTP requests. + +```php +$favicon = new Favicon; +$favicon->find('http://example.net/'); + +echo $favicon->getDataUri(); + +// Output something like that: data:image/png;base64,iVBORw0KGgoAAAANSUh..... +``` + +See: http://en.wikipedia.org/wiki/Data_URI_scheme + +Check if a favicon link exists +------------------------------ + +```php +use PicoFeed\Reader\Favicon; + +$favicon = new Favicon; + +// Return true if the file exists +var_dump($favicon->exists('http://php.net/favicon.ico')); +``` + +Use personalized HTTP settings +------------------------------ + +Like other classes, the Favicon class support the Config object as constructor argument: + +```php +use PicoFeed\Config\Config; +use PicoFeed\Reader\Favicon; + +$config = new Config; +$config->setClientUserAgent('My RSS Reader'); + +$favicon = new Favicon($config); +$favicon->find('https://github.com'); +``` \ No newline at end of file diff --git a/vendor/fguillot/picofeed/docs/feed-creation.markdown b/vendor/fguillot/picofeed/docs/feed-creation.markdown new file mode 100644 index 000000000..35a24a9d7 --- /dev/null +++ b/vendor/fguillot/picofeed/docs/feed-creation.markdown @@ -0,0 +1,74 @@ +Feed creation +============= + +PicoFeed can also generate Atom and RSS feeds. + +Generate RSS 2.0 feed +---------------------- + +```php +use PicoFeed\Syndication\Rss20; + +$writer = new Rss20(); +$writer->title = 'My site'; +$writer->site_url = 'http://boo/'; +$writer->feed_url = 'http://boo/feed.atom'; +$writer->author = array( + 'name' => 'Me', + 'url' => 'http://me', + 'email' => 'me@here' +); + +$writer->items[] = array( + 'title' => 'My article 1', + 'updated' => strtotime('-2 days'), + 'url' => 'http://foo/bar', + 'summary' => 'Super summary', + 'content' => '

content

' +); + +$writer->items[] = array( + 'title' => 'My article 2', + 'updated' => strtotime('-1 day'), + 'url' => 'http://foo/bar2', + 'summary' => 'Super summary 2', + 'content' => '

content 2   © 2015

', + 'author' => array( + 'name' => 'Me too', + ) +); + +$writer->items[] = array( + 'title' => 'My article 3', + 'url' => 'http://foo/bar3' +); + +echo $writer->execute(); +``` + +Generate Atom feed +------------------ + +```php +use PicoFeed\Syndication\Atom; + +$writer = new Atom(); +$writer->title = 'My site'; +$writer->site_url = 'http://boo/'; +$writer->feed_url = 'http://boo/feed.atom'; +$writer->author = array( + 'name' => 'Me', + 'url' => 'http://me', + 'email' => 'me@here' +); + +$writer->items[] = array( + 'title' => 'My article 1', + 'updated' => strtotime('-2 days'), + 'url' => 'http://foo/bar', + 'summary' => 'Super summary', + 'content' => '

content

' +); + +echo $writer->execute(); +``` diff --git a/vendor/fguillot/picofeed/docs/feed-parsing.markdown b/vendor/fguillot/picofeed/docs/feed-parsing.markdown new file mode 100644 index 000000000..d00e08364 --- /dev/null +++ b/vendor/fguillot/picofeed/docs/feed-parsing.markdown @@ -0,0 +1,226 @@ +Feed parsing +============ + +Parsing a subscription +---------------------- + +```php +use PicoFeed\Reader\Reader; +use PicoFeed\PicoFeedException; + +try { + + $reader = new Reader; + + // Return a resource + $resource = $reader->download('http://linuxfr.org/news.atom'); + + // Return the right parser instance according to the feed format + $parser = $reader->getParser( + $resource->getUrl(), + $resource->getContent(), + $resource->getEncoding() + ); + + // Return a Feed object + $feed = $parser->execute(); + + // Print the feed properties with the magic method __toString() + echo $feed; +} +catch (PicoFeedException $e) { + // Do Something... +} +``` + +- The Reader class is the entry point for feed reading +- The method `download()` fetch the remote content and return a resource, an instance of `PicoFeed\Client\Client` +- The method `getParser()` returns a Parser instance according to the feed format Atom, Rss 2.0... +- The parser itself returns a `Feed` object that contains feed and item properties + +Output: + +```bash +Feed::id = tag:linuxfr.org,2005:/news +Feed::title = LinuxFr.org : les dépêches +Feed::feed_url = http://linuxfr.org/news.atom +Feed::site_url = http://linuxfr.org/news +Feed::date = 1415138079 +Feed::language = en-US +Feed::description = +Feed::logo = +Feed::items = 15 items +Feed::isRTL() = false +---- +Item::id = 38d8f48284fb03940cbb3aff9101089b81e44efb1281641bdd7c3e7e4bf3b0cd +Item::title = openSUSE 13.2 : nouvelle version du caméléon disponible ! +Item::url = http://linuxfr.org/news/opensuse-13-2-nouvelle-version-du-cameleon-disponible +Item::date = 1415122640 +Item::language = en-US +Item::author = Syvolc +Item::enclosure_url = +Item::enclosure_type = +Item::isRTL() = false +Item::content = 18307 bytes +.... +``` + +Get the list of available subscriptions for a website +----------------------------------------------------- + +The example below will returns all available subscriptions for the website: + +```php +use PicoFeed\Reader\Reader; + +try { + + $reader = new Reader; + $resource = $reader->download('http://www.cnn.com'); + + $feeds = $reader->find( + $resource->getUrl(), + $resource->getContent() + ); + + print_r($feeds); +} +catch (PicoFeedException $e) { + // Do something... +} +``` + +Output: + +```php +Array +( + [0] => http://rss.cnn.com/rss/cnn_topstories.rss + [1] => http://rss.cnn.com/rss/cnn_latest.rss +) +``` + +Feed discovery and parsing +-------------------------- + +This example will discover automatically the subscription and parse the feed: + +```php +try { + + $reader = new Reader; + $resource = $reader->discover('http://linuxfr.org'); + + $parser = $reader->getParser( + $resource->getUrl(), + $resource->getContent(), + $resource->getEncoding() + ); + + $feed = $parser->execute(); + echo $feed; +} +catch (PicoFeedException $e) { +} +``` + +HTTP caching +------------ + +PicoFeed supports HTTP caching to avoid unnecessary processing. + +1. After the first download, save in your database the values of the Etag and LastModified HTTP headers +2. For the next requests, provide those values to the `download()` method and check if the feed was modified or not + +Here an example: + +```php +try { + + // Fetch from your database the previous values of the Etag and LastModified headers + $etag = '...'; + $last_modified = '...'; + + $reader = new Reader; + + // Provide those values to the download method + $resource = $reader->download('http://linuxfr.org/news.atom', $last_modified, $etag); + + // Return true if the remote content has changed + if ($resource->isModified()) { + + $parser = $reader->getParser( + $resource->getUrl(), + $resource->getContent(), + $resource->getEncoding() + ); + + $feed = $parser->execute(); + + // Save your feed in your database + // ... + + // Store the Etag and the LastModified headers in your database for the next requests + $etag = $resource->getEtag(); + $last_modified = $resource->getLastModified(); + + // ... + } + else { + + echo 'Not modified, nothing to do!'; + } +} +catch (PicoFeedException $e) { + // Do something... +} +``` + + +Feed and item properties +------------------------ + +```php +// Feed object +$feed->getId(); // Unique feed id +$feed->getTitle(); // Feed title +$feed->getFeedUrl(); // Feed url +$feed->getSiteUrl(); // Website url +$feed->getDate(); // Feed last updated date +$feed->getLanguage(); // Feed language +$feed->getDescription(); // Feed description +$feed->getLogo(); // Feed logo (can be a large image, different from icon) +$feed->getItems(); // List of item objects + +// Item object +$feed->items[0]->getId(); // Item unique id (hash) +$feed->items[0]->getTitle(); // Item title +$feed->items[0]->getUrl(); // Item url +$feed->items[0]->getDate(); // Item published date (timestamp) +$feed->items[0]->getLanguage(); // Item language +$feed->items[0]->getAuthor(); // Item author +$feed->items[0]->getEnclosureUrl(); // Enclosure url +$feed->items[0]->getEnclosureType(); // Enclosure mime-type (audio/mp3, image/png...) +$feed->items[0]->getContent(); // Item content (filtered or raw) +$feed->items[0]->isRTL(); // Return true if the item language is Right-To-Left +``` + +RTL language detection +---------------------- + +Use the method `Item::isRTL()` to test if an item is RTL or not: + +```php +var_dump($item->isRTL()); // true or false +``` + +Known RTL languages are: + +- Arabic (ar-**) +- Farsi (fa-**) +- Urdu (ur-**) +- Pashtu (ps-**) +- Syriac (syr-**) +- Divehi (dv-**) +- Hebrew (he-**) +- Yiddish (yi-**) diff --git a/vendor/fguillot/picofeed/docs/grabber.markdown b/vendor/fguillot/picofeed/docs/grabber.markdown new file mode 100644 index 000000000..b99b756ed --- /dev/null +++ b/vendor/fguillot/picofeed/docs/grabber.markdown @@ -0,0 +1,136 @@ +Web scraper +=========== + +The web scraper is useful for feeds that display only a summary of articles, the scraper can download and parse the full content from the original website. + +How the content grabber works? +------------------------------ + +1. Try with rules first (XPath queries) for the domain name (see `PicoFeed\Rules\`) +2. Try to find the text content by using common attributes for class and id +3. Finally, if nothing is found, the feed content is displayed + +**The best results are obtained with XPath rules file.** + +Standalone usage +---------------- + +```php +download(); +$grabber->parse(); + +// Get raw HTML content +echo $grabber->getRawContent(); + +// Get relevant content +echo $grabber->getContent(); + +// Get filtered relevant content +echo $grabber->getFilteredContent(); +``` + +Fetch full item contents during feed parsing +-------------------------------------------- + +Before parsing all items, just call the method `$parser->enableContentGrabber()`: + +```php +download('http://www.egscomics.com/rss.php'); + + // Return the right parser instance according to the feed format + $parser = $reader->getParser( + $resource->getUrl(), + $resource->getContent(), + $resource->getEncoding() + ); + + // Enable content grabber before parsing items + $parser->enableContentGrabber(); + + // Return a Feed object + $feed = $parser->execute(); +} +catch (PicoFeedException $e) { + // Do Something... +} +``` + +When the content scraper is enabled, everything will be slower. +**For each item a new HTTP request is made** and the HTML downloaded is parsed with XML/XPath. + +Configuration +------------- + +### Enable content grabber for items + +- Method name: `enableContentGrabber()` +- Default value: false (content grabber is disabled by default) +- Argument value: none + +```php +$parser->enableContentGrabber(); +``` + +### Ignore item urls for the content grabber + +- Method name: `setGrabberIgnoreUrls()` +- Default value: empty (fetch all item urls) +- Argument value: array (list of item urls to ignore) + +```php +$parser->setGrabberIgnoreUrls(['http://foo', 'http://bar']); +``` + +How to write a grabber rules file? +---------------------------------- + +Add a PHP file to the directory `PicoFeed\Rules`, the filename must be the same as the domain name: + +Example with the BBC website, `www.bbc.co.uk.php`: + +```php + 'http://www.bbc.co.uk/news/world-middle-east-23911833', + 'body' => array( + '//div[@class="story-body"]', + ), + 'strip' => array( + '//script', + '//form', + '//style', + '//*[@class="story-date"]', + '//*[@class="story-header"]', + '//*[@class="story-related"]', + '//*[contains(@class, "byline")]', + '//*[contains(@class, "story-feature")]', + '//*[@id="video-carousel-container"]', + '//*[@id="also-related-links"]', + '//*[contains(@class, "share") or contains(@class, "hidden") or contains(@class, "hyper")]', + ) +); +``` + +Actually, only `body`, `strip` and `test_url` are supported. + +Don't forget to send a pull request or a ticket to share your contribution with everybody, + +List of content grabber rules +----------------------------- + +Rules are stored inside the directory [lib/PicoFeed/Rules](https://github.com/fguillot/picoFeed/tree/master/lib/PicoFeed/Rules) diff --git a/vendor/fguillot/picofeed/docs/image-proxy.markdown b/vendor/fguillot/picofeed/docs/image-proxy.markdown new file mode 100644 index 000000000..2c3dafdf8 --- /dev/null +++ b/vendor/fguillot/picofeed/docs/image-proxy.markdown @@ -0,0 +1,67 @@ +Image Proxy +=========== + +To prevent mixed content warnings on SSL pages served from your RSS reader you might want to use an assets proxy. + +Images url will be rewritten to be downloaded through the proxy. + +Example: + +```html + +``` + +Can be rewritten like that: + +```html + +``` + +Currently this feature is only compatible with images. + +There is several open source SSL image proxy available like [Camo](https://github.com/atmos/camo). +You can also write your own proxy. + +Usage +----- + +There two different ways to use this feature, define a proxy url or a callback. + +### Define a proxy url + +A proxy url must be defined with a placeholder `%s`. +The placeholder will be replaced by the image source url encoded (RFC 3986). +In PHP, the url can be decoded with the function `rawurldecode()`. + +```php +$config = new Config; +$config->setFilterImageProxyUrl('http://myproxy.example.org/?url=%s'); +``` + +Will rewrite the image source like that: + +```html + +``` + +### Define a callback + +Your callback will be called each time an image url need to be rewritten. +The first argument is the original image url and your function must returns the new image url. + +Here an example if your proxy need a shared s