Completed
Push — master ( 4ce137...cce6a6 )
by Ivan
03:36 queued 01:24
created

Crawler   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 33.33%

Importance

Changes 4
Bugs 1 Features 2
Metric Value
wmc 5
c 4
b 1
f 2
lcom 1
cbo 3
dl 0
loc 55
ccs 2
cts 6
cp 0.3333
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getLoader() 0 4 1
A __construct() 0 6 1
A sendRequest() 0 7 1
A open() 0 6 1
A getUri() 0 4 1
1
<?php
2
3
namespace SP\Crawler;
4
5
use Psr\Http\Message\RequestInterface;
6
use SP\Crawler\Element\AbstractElement;
7
use Psr\Http\Message\UriInterface;
8
use GuzzleHttp\Psr7\Request;
9
use DOMDocument;
10
use DOMElement;
11
12
/**
13
 * @author    Ivan Kerin <[email protected]>
14
 * @copyright 2015, Clippings Ltd.
15
 * @license   http://spdx.org/licenses/BSD-3-Clause
16
 */
17
class Crawler extends Reader
18
{
19
    /**
20
     * @var LoaderInterface
21
     */
22
    private $loader;
23
24
    /**
25
     * @param LoaderInterface $loader
26
     * @param DOMDocument     $document
27
     */
28
    public function __construct(LoaderInterface $loader, DOMDocument $document)
29
    {
30
        $this->loader = $loader;
31
32
        parent::__construct($document);
33
    }
34
35
    /**
36
     * @return LoaderInterface
37
     */
38 1
    public function getLoader()
39
    {
40 1
        return $this->loader;
41
    }
42
43
    /**
44
     * @param  RequestInterface $request
45
     */
46
    public function sendRequest(RequestInterface $request)
47
    {
48
        $response = $this->loader->send($request);
49
        $contents = $response->getBody()->getContents();
50
51
        $this->setDocumentContent($contents);
52
    }
53
54
    /**
55
     * @param  string $uri
56
     */
57
    public function open(UriInterface $uri)
58
    {
59
        $request = new Request('GET', $uri);
60
61
        $this->sendRequest($request);
62
    }
63
64
    /**
65
     * @return Psr\Http\Message\UriInterface
66
     */
67
    public function getUri()
68
    {
69
        return $this->loader->getCurrentUri();
70
    }
71
}
72