GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( cdf584...500099 )
by Brent
12s
created

BaseReporter::crawled()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 8
nc 2
nop 3
1
<?php
2
3
namespace Spatie\LinkChecker\Reporters;
4
5
use GuzzleHttp\Exception\RequestException;
6
use Psr\Http\Message\ResponseInterface;
7
use Psr\Http\Message\UriInterface;
8
use Spatie\Crawler\CrawlObserver;
9
10
abstract class BaseReporter extends CrawlObserver
11
{
12
    const UNRESPONSIVE_HOST = 'Host did not respond';
13
14
    /**
15
     * @var array
16
     */
17
    protected $urlsGroupedByStatusCode = [];
18
19
    /**
20
     * Called when the crawler has crawled the given url successfully.
21
     *
22
     * @param \Psr\Http\Message\UriInterface      $url
23
     * @param \Psr\Http\Message\ResponseInterface $response
24
     * @param null|\Psr\Http\Message\UriInterface $foundOnUrl
25
     *
26
     * @return int|string
27
     */
28
    public function crawled(
29
        UriInterface $url,
30
        ResponseInterface $response,
31
        ?UriInterface $foundOnUrl = null
32
    ) {
33
        $statusCode = $response->getStatusCode();
34
35
        if (!$this->isExcludedStatusCode($statusCode)) {
36
            $this->urlsGroupedByStatusCode[$statusCode][] = $url;
37
        }
38
39
        return $statusCode;
40
    }
41
42
    /**
43
     * Called when the crawler had a problem crawling the given url.
44
     *
45
     * @param \Psr\Http\Message\UriInterface $url
46
     * @param \GuzzleHttp\Exception\RequestException $requestException
47
     * @param \Psr\Http\Message\UriInterface|null $foundOnUrl
48
     */
49
    public function crawlFailed(
50
        UriInterface $url,
51
        RequestException $requestException,
52
        ?UriInterface $foundOnUrl = null
53
    ) {
54
        $statusCode = $requestException->getCode();
55
56
        if (!$this->isExcludedStatusCode($statusCode)) {
57
            $this->urlsGroupedByStatusCode[$statusCode][] = $url;
58
        }
59
60
        return $statusCode;
61
    }
62
63
    /**
64
     * Determine if the statuscode concerns a successful or
65
     * redirect response.
66
     *
67
     * @param int|string $statusCode
68
     * @return bool
69
     */
70
    protected function isSuccessOrRedirect($statusCode): bool
71
    {
72
        return starts_with($statusCode, ['2', '3']);
73
    }
74
75
    /**
76
     * Determine if the crawler saw some bad urls.
77
     */
78
    protected function crawledBadUrls(): bool
79
    {
80
        return collect($this->urlsGroupedByStatusCode)->keys()->filter(function ($statusCode) {
81
            return !$this->isSuccessOrRedirect($statusCode);
82
        })->count() > 0;
83
    }
84
85
    /**
86
     * Determine if the statuscode should be excluded'
87
     * from the reporter.
88
     *
89
     * @param int|string $statusCode
90
     *
91
     * @return bool
92
     */
93
    protected function isExcludedStatusCode($statusCode): bool
94
    {
95
        $exludedStatusCodes = config('laravel-link-checker.reporters.exclude_status_codes', []);
96
97
        return in_array($statusCode, $exludedStatusCodes);
98
    }
99
}
100