Endpoint::matches()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
eloc 2
nc 3
nop 0
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 3
rs 10
c 2
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cerbero\LazyJsonPages\Sources;
6
7
use Cerbero\JsonParser\Concerns\DetectsEndpoints;
8
use GuzzleHttp\Psr7\Request;
9
use Psr\Http\Message\RequestInterface;
10
use Psr\Http\Message\ResponseInterface;
11
use Psr\Http\Message\UriInterface;
12
13
/**
14
 * The JSON endpoint source.
15
 *
16
 * @property-read UriInterface|string $source
17
 */
18
class Endpoint extends Source
19
{
20
    use DetectsEndpoints;
21
22
    /**
23
     * Determine whether this class can handle the source.
24
     */
25 47
    public function matches(): bool
26
    {
27 47
        return (is_string($this->source) && $this->isEndpoint($this->source))
28 47
            || $this->source instanceof UriInterface;
29
    }
30
31
    /**
32
     * Retrieve the HTTP request.
33
     */
34 40
    public function request(): RequestInterface
35
    {
36 40
        return new Request('GET', $this->source);
37
    }
38
39
    /**
40
     * Retrieve the HTTP response.
41
     *
42
     * @return ResponseInterface
43
     */
44 40
    public function response(): ResponseInterface
45
    {
46 40
        return $this->client->send($this->request());
47
    }
48
}
49