Passed
Branch develop (61f351)
by Alexey
01:52
created

ReviewsScraper::__invoke()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 10
nc 3
nop 2
dl 0
loc 15
rs 9.9332
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Nelexa\GPlay\Scraper;
5
6
use Nelexa\GPlay\Http\ResponseHandlerInterface;
7
use Nelexa\GPlay\Request\RequestApp;
8
use Nelexa\GPlay\Scraper\Extractor\ReviewsExtractor;
9
use Psr\Http\Message\RequestInterface;
10
use Psr\Http\Message\ResponseInterface;
11
12
class ReviewsScraper implements ResponseHandlerInterface
13
{
14
    /**
15
     * @var RequestApp
16
     */
17
    private $requestApp;
18
19
    /**
20
     * ReviewsScraper constructor.
21
     *
22
     * @param RequestApp $requestApp
23
     */
24
    public function __construct(RequestApp $requestApp)
25
    {
26
        $this->requestApp = $requestApp;
27
    }
28
29
    /**
30
     * @param RequestInterface $request
31
     * @param ResponseInterface $response
32
     * @return array
33
     */
34
    public function __invoke(RequestInterface $request, ResponseInterface $response)
35
    {
36
        $contents = substr($response->getBody()->getContents(), 5);
37
        $json = \GuzzleHttp\json_decode($contents, true);
38
        if (!isset($json[0][2])) {
39
            return [[], null];
40
        }
41
        $json = \GuzzleHttp\json_decode($json[0][2], true);
42
43
        if (empty($json[0])) {
44
            return [[], null];
45
        }
46
        $reviews = ReviewsExtractor::extractReviews($this->requestApp, $json[0]);
47
        $nextToken = $json[1][1] ?? null;
48
        return [$reviews, $nextToken];
49
    }
50
}
51