├── .github └── workflows │ ├── ci.yml │ └── release-phar.yml ├── .gitignore ├── .php-cs-fixer.dist.php ├── CHANGELOG.md ├── Dockerfile ├── LICENSE ├── README.md ├── bin └── fink ├── box.json ├── composer.json ├── lib ├── Adapter │ └── Artax │ │ ├── ImmutableCookieJar.php │ │ └── NetscapeCookieFileJar.php ├── Console │ ├── Command │ │ ├── CrawlCommand.php │ │ └── Exception │ │ │ └── AtLeastOneFailure.php │ ├── Display.php │ ├── Display │ │ ├── ConcatenatingDisplay.php │ │ ├── MemoryDisplay.php │ │ ├── RateDisplay.php │ │ ├── ReportListDisplay.php │ │ ├── StatusLineDisplay.php │ │ └── UptimeDisplay.php │ ├── DisplayBuilder.php │ ├── DisplayRegistry.php │ ├── Exception │ │ ├── CouldNotParseHeader.php │ │ └── DisplayNotFound.php │ └── HeaderParser.php ├── DispatcherBuilder.php ├── FinkExtension.php └── Model │ ├── Crawler.php │ ├── Dispatcher.php │ ├── DispatcherBuilderFactory.php │ ├── Exception │ ├── InvalidUrl.php │ ├── InvalidUrlComparison.php │ └── UrlQueueEmpty.php │ ├── HttpStatusCode.php │ ├── ImmutableReportStore.php │ ├── Limiter.php │ ├── Limiter │ ├── ChainLimiter.php │ ├── ConcurrencyLimiter.php │ ├── Exception │ │ └── InvalidRate.php │ └── RateLimiter.php │ ├── Publisher.php │ ├── Publisher │ ├── BlackholePublisher.php │ ├── CsvStreamPublisher.php │ └── JsonStreamPublisher.php │ ├── Queue │ ├── DedupeQueue.php │ ├── ExcludingQueue.php │ ├── ExternalDistanceLimitingQueue.php │ ├── MaxDistanceQueue.php │ └── RealUrlQueue.php │ ├── ReferringElement.php │ ├── Report.php │ ├── ReportBuilder.php │ ├── ReportStore.php │ ├── Reporter.php │ ├── Status.php │ ├── Store │ ├── CircularReportStore.php │ ├── ImmutableReportStore.php │ └── NullReportStore.php │ ├── Url.php │ ├── UrlQueue.php │ └── Urls.php ├── phpstan-baseline.neon ├── phpstan.neon ├── phpunit.xml.dist └── tests ├── EndToEnd ├── Command │ └── CrawlCommandTest.php └── EndToEndTestCase.php ├── Example ├── amphp-website │ ├── amp │ │ ├── coroutines │ │ │ ├── index.html │ │ │ └── index.php │ │ └── promises │ │ │ └── index.php │ └── index.html ├── base-url │ └── index.html ├── cookie-protected │ ├── cookie.php │ └── cookies.txt ├── custom-headers │ └── teapot.php ├── malformed-host │ └── index.html └── website │ ├── about.html │ ├── blog.html │ ├── hidden.html │ ├── hidden │ ├── secret.html │ ├── secret1.html │ └── secret2.html │ ├── index.html │ └── posts │ ├── external │ └── index.html │ ├── index.html │ ├── post1.html │ └── post2.html ├── Integration ├── Adapter │ └── Artax │ │ └── NetscapeCookieFileJarTest.php └── Model │ └── Publisher │ └── CsvStreamPublisherTest.php ├── IntegrationTestCase.php └── Unit ├── Adapter └── Artax │ └── ImmutableCookieJarTest.php ├── Console ├── Display │ ├── ConcatenatingDisplayTest.php │ ├── DisplayTestCase.php │ ├── MemoryDisplayTest.php │ ├── RateDisplayTest.php │ ├── ReportListDisplayTest.php │ ├── StatusLineDisplayTest.php │ └── UptimeDisplayTest.php ├── DisplayBuilderTest.php ├── DisplayRegistryTest.php └── HeaderParserTest.php └── Model ├── HttpStatusCodeTest.php ├── Limiter ├── ChainLimiterTest.php ├── ConcurrecnyLimiterTest.php └── RateLimiterTest.php ├── Publisher └── JsonStreamPublisherTest.php ├── Queue ├── DedupeQueueTest.php ├── ExcludingQueueTest.php ├── ExternalDisatanceLimitingQueueTest.php └── MaxDistanceQueueTest.php ├── ReferringElementTest.php ├── Store ├── CircularReportStoreTest.php └── ImmutableReportStoreTest.php ├── UrlQueueTest.php └── UrlTest.php /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/release-phar.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/.github/workflows/release-phar.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/.gitignore -------------------------------------------------------------------------------- /.php-cs-fixer.dist.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/.php-cs-fixer.dist.php -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | ARG PHP_EXTENSIONS="pcntl event xml" 2 | FROM thecodingmachine/php:7.2-v2-cli 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/README.md -------------------------------------------------------------------------------- /bin/fink: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/bin/fink -------------------------------------------------------------------------------- /box.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/box.json -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/composer.json -------------------------------------------------------------------------------- /lib/Adapter/Artax/ImmutableCookieJar.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Adapter/Artax/ImmutableCookieJar.php -------------------------------------------------------------------------------- /lib/Adapter/Artax/NetscapeCookieFileJar.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Adapter/Artax/NetscapeCookieFileJar.php -------------------------------------------------------------------------------- /lib/Console/Command/CrawlCommand.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Command/CrawlCommand.php -------------------------------------------------------------------------------- /lib/Console/Command/Exception/AtLeastOneFailure.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Command/Exception/AtLeastOneFailure.php -------------------------------------------------------------------------------- /lib/Console/Display.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display.php -------------------------------------------------------------------------------- /lib/Console/Display/ConcatenatingDisplay.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display/ConcatenatingDisplay.php -------------------------------------------------------------------------------- /lib/Console/Display/MemoryDisplay.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display/MemoryDisplay.php -------------------------------------------------------------------------------- /lib/Console/Display/RateDisplay.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display/RateDisplay.php -------------------------------------------------------------------------------- /lib/Console/Display/ReportListDisplay.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display/ReportListDisplay.php -------------------------------------------------------------------------------- /lib/Console/Display/StatusLineDisplay.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display/StatusLineDisplay.php -------------------------------------------------------------------------------- /lib/Console/Display/UptimeDisplay.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Display/UptimeDisplay.php -------------------------------------------------------------------------------- /lib/Console/DisplayBuilder.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/DisplayBuilder.php -------------------------------------------------------------------------------- /lib/Console/DisplayRegistry.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/DisplayRegistry.php -------------------------------------------------------------------------------- /lib/Console/Exception/CouldNotParseHeader.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Exception/CouldNotParseHeader.php -------------------------------------------------------------------------------- /lib/Console/Exception/DisplayNotFound.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/Exception/DisplayNotFound.php -------------------------------------------------------------------------------- /lib/Console/HeaderParser.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Console/HeaderParser.php -------------------------------------------------------------------------------- /lib/DispatcherBuilder.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/DispatcherBuilder.php -------------------------------------------------------------------------------- /lib/FinkExtension.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/FinkExtension.php -------------------------------------------------------------------------------- /lib/Model/Crawler.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Crawler.php -------------------------------------------------------------------------------- /lib/Model/Dispatcher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Dispatcher.php -------------------------------------------------------------------------------- /lib/Model/DispatcherBuilderFactory.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/DispatcherBuilderFactory.php -------------------------------------------------------------------------------- /lib/Model/Exception/InvalidUrl.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Exception/InvalidUrl.php -------------------------------------------------------------------------------- /lib/Model/Exception/InvalidUrlComparison.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Exception/InvalidUrlComparison.php -------------------------------------------------------------------------------- /lib/Model/Exception/UrlQueueEmpty.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Exception/UrlQueueEmpty.php -------------------------------------------------------------------------------- /lib/Model/HttpStatusCode.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/HttpStatusCode.php -------------------------------------------------------------------------------- /lib/Model/ImmutableReportStore.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/ImmutableReportStore.php -------------------------------------------------------------------------------- /lib/Model/Limiter.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Limiter.php -------------------------------------------------------------------------------- /lib/Model/Limiter/ChainLimiter.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Limiter/ChainLimiter.php -------------------------------------------------------------------------------- /lib/Model/Limiter/ConcurrencyLimiter.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Limiter/ConcurrencyLimiter.php -------------------------------------------------------------------------------- /lib/Model/Limiter/Exception/InvalidRate.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Limiter/Exception/InvalidRate.php -------------------------------------------------------------------------------- /lib/Model/Limiter/RateLimiter.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Limiter/RateLimiter.php -------------------------------------------------------------------------------- /lib/Model/Publisher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Publisher.php -------------------------------------------------------------------------------- /lib/Model/Publisher/BlackholePublisher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Publisher/BlackholePublisher.php -------------------------------------------------------------------------------- /lib/Model/Publisher/CsvStreamPublisher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Publisher/CsvStreamPublisher.php -------------------------------------------------------------------------------- /lib/Model/Publisher/JsonStreamPublisher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Publisher/JsonStreamPublisher.php -------------------------------------------------------------------------------- /lib/Model/Queue/DedupeQueue.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Queue/DedupeQueue.php -------------------------------------------------------------------------------- /lib/Model/Queue/ExcludingQueue.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Queue/ExcludingQueue.php -------------------------------------------------------------------------------- /lib/Model/Queue/ExternalDistanceLimitingQueue.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Queue/ExternalDistanceLimitingQueue.php -------------------------------------------------------------------------------- /lib/Model/Queue/MaxDistanceQueue.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Queue/MaxDistanceQueue.php -------------------------------------------------------------------------------- /lib/Model/Queue/RealUrlQueue.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Queue/RealUrlQueue.php -------------------------------------------------------------------------------- /lib/Model/ReferringElement.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/ReferringElement.php -------------------------------------------------------------------------------- /lib/Model/Report.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Report.php -------------------------------------------------------------------------------- /lib/Model/ReportBuilder.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/ReportBuilder.php -------------------------------------------------------------------------------- /lib/Model/ReportStore.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/ReportStore.php -------------------------------------------------------------------------------- /lib/Model/Reporter.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Reporter.php -------------------------------------------------------------------------------- /lib/Model/Status.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Status.php -------------------------------------------------------------------------------- /lib/Model/Store/CircularReportStore.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Store/CircularReportStore.php -------------------------------------------------------------------------------- /lib/Model/Store/ImmutableReportStore.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Store/ImmutableReportStore.php -------------------------------------------------------------------------------- /lib/Model/Store/NullReportStore.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Store/NullReportStore.php -------------------------------------------------------------------------------- /lib/Model/Url.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Url.php -------------------------------------------------------------------------------- /lib/Model/UrlQueue.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/UrlQueue.php -------------------------------------------------------------------------------- /lib/Model/Urls.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/lib/Model/Urls.php -------------------------------------------------------------------------------- /phpstan-baseline.neon: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/phpstan-baseline.neon -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/phpstan.neon -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/phpunit.xml.dist -------------------------------------------------------------------------------- /tests/EndToEnd/Command/CrawlCommandTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/EndToEnd/Command/CrawlCommandTest.php -------------------------------------------------------------------------------- /tests/EndToEnd/EndToEndTestCase.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/EndToEnd/EndToEndTestCase.php -------------------------------------------------------------------------------- /tests/Example/amphp-website/amp/coroutines/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/Example/amphp-website/amp/coroutines/index.html -------------------------------------------------------------------------------- /tests/Example/amphp-website/amp/coroutines/index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/Example/amphp-website/amp/coroutines/index.php -------------------------------------------------------------------------------- /tests/Example/amphp-website/amp/promises/index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/Example/amphp-website/amp/promises/index.php -------------------------------------------------------------------------------- /tests/Example/amphp-website/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/Example/amphp-website/index.html -------------------------------------------------------------------------------- /tests/Example/base-url/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dantleech/fink/HEAD/tests/Example/base-url/index.html -------------------------------------------------------------------------------- /tests/Example/cookie-protected/cookie.php: -------------------------------------------------------------------------------- 1 |