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

FindDevAppsUrlScraper   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 29
rs 10
c 0
b 0
f 0
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 21 5
1
<?php
2
declare(strict_types=1);
3
4
namespace Nelexa\GPlay\Scraper;
5
6
use Nelexa\GPlay\Exception\GooglePlayException;
7
use Nelexa\GPlay\GPlayApps;
8
use Nelexa\GPlay\Http\ResponseHandlerInterface;
9
use Nelexa\GPlay\Util\ScraperUtil;
10
use Psr\Http\Message\RequestInterface;
11
use Psr\Http\Message\ResponseInterface;
12
13
class FindDevAppsUrlScraper implements ResponseHandlerInterface
14
{
15
    /**
16
     * @param RequestInterface $request
17
     * @param ResponseInterface $response
18
     * @return string|null
19
     * @throws GooglePlayException
20
     */
21
    public function __invoke(RequestInterface $request, ResponseInterface $response): ?string
22
    {
23
        $scriptData = ScraperUtil::extractScriptData($response->getBody()->getContents());
24
25
        $scriptDataApps = null;
26
        foreach ($scriptData as $key => $scriptValue) {
27
            if (isset($scriptValue[0][1][0][0][3][4][2])) { // ds:3
28
                $scriptDataApps = $scriptValue;
29
                break;
30
            }
31
        }
32
33
        if ($scriptDataApps === null) {
34
            throw (new GooglePlayException('Error fetch cluster page'))
35
                ->setUrl($request->getUri()->__toString());
36
        }
37
38
        if (isset($scriptDataApps[0][1][0][0][3][4][2])) {
39
            return GPlayApps::GOOGLE_PLAY_URL . $scriptDataApps[0][1][0][0][3][4][2];
40
        }
41
        return null;
42
    }
43
}
44