Passed
Branch develop (2fd4b5)
by Alexey
01:46
created

AppId::getFullUrl()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 6
ccs 5
cts 5
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
/**
5
 * @author   Ne-Lexa
6
 * @license  MIT
7
 * @link     https://github.com/Ne-Lexa/google-play-scraper
8
 */
9
10
namespace Nelexa\GPlay\Model;
11
12
use Nelexa\GPlay\GPlayApps;
13
use Nelexa\GPlay\Util\LocaleHelper;
14
15
/**
16
 * Contains the application ID, as well as the locale and country for which the information was or will be obtained.
17
 *
18
 * This class is the base class for {@see \Nelexa\GPlay\Model\App}
19
 * and {@see \Nelexa\GPlay\Model\AppDetail}.
20
 *
21
 * @see \Nelexa\GPlay\Model\App Contains basic information about the application
22
 *     from the Google Play store.
23
 * @see \Nelexa\GPlay\Model\AppDetail Contains detailed information about the
24
 *     application from the Google Play store.
25
 */
26
class AppId
27
{
28
    /** @var string Application ID (Android package name) */
29
    private $id;
30
31
    /** @var string Locale (site language) */
32
    private $locale;
33
34
    /**
35
     * @var string The country of the request for information about the
36
     *     application (affects the price and currency of paid applications
37
     *     and possibly their availability on the Google Play store).
38
     */
39
    private $country;
40
41
    /**
42
     * Creates an \Nelexa\GPlay\Model\AppId object.
43
     *
44
     * @param string $id Application ID (Android package name).
45
     * @param string $locale Locale (ex. en_US, en-CA or en). Default is 'en_US'.
46
     * @param string $country Country (affects prices). Default is 'us'.
47
     *
48
     * @throws \InvalidArgumentException If passed an empty application ID.
49
     */
50 28
    public function __construct(
51
        string $id,
52
        string $locale = GPlayApps::DEFAULT_LOCALE,
53
        string $country = GPlayApps::DEFAULT_COUNTRY
54
    ) {
55 28
        if (empty($id)) {
56 3
            throw new \InvalidArgumentException('Application ID cannot be empty');
57
        }
58 25
        $this->id = $id;
59 25
        $this->locale = LocaleHelper::getNormalizeLocale($locale);
60 25
        $this->country = $country;
61 25
    }
62
63
    /**
64
     * Returns the application ID (android package name).
65
     *
66
     * @return string Application ID (android package name).
67
     */
68 9
    public function getId(): string
69
    {
70 9
        return $this->id;
71
    }
72
73
    /**
74
     * Returns the locale (site language) for which the information was received.
75
     *
76
     * @return string Locale (ex. en_US, en-CA or en). Default is 'en_US'.
77
     */
78 6
    public function getLocale(): string
79
    {
80 6
        return $this->locale;
81
    }
82
83
    /**
84
     * Returns the country of the request for information about the application.
85
     *
86
     * This parameter affects the price and currency of paid applications
87
     * and, possibly, the presence of an application in the Google Play store).
88
     *
89
     * @return string Country (affects prices). Default is 'us'.
90
     */
91 4
    public function getCountry(): string
92
    {
93 4
        return $this->country;
94
    }
95
96
    /**
97
     * Returns the URL of the application page in the Google Play store.
98
     *
99
     * @return string Url of the app page in Google Play.
100
     */
101 9
    public function getUrl(): string
102
    {
103 9
        return GPlayApps::GOOGLE_PLAY_APPS_URL . '/details?' . http_build_query([
104 9
                GPlayApps::REQ_PARAM_ID => $this->id,
105
            ]);
106
    }
107
108
    /**
109
     * Returns the full URL of the app's page on Google Play, specifying
110
     * the locale and country of the request.
111
     *
112
     * @return string URL of the app's page on Google Play, specifying the
113
     *     locale and country of the request.
114
     */
115 18
    public function getFullUrl(): string
116
    {
117 18
        return GPlayApps::GOOGLE_PLAY_APPS_URL . '/details?' . http_build_query([
118 18
                GPlayApps::REQ_PARAM_ID => $this->id,
119 18
                GPlayApps::REQ_PARAM_LOCALE => $this->locale,
120 18
                GPlayApps::REQ_PARAM_COUNTRY => $this->country,
121
            ]);
122
    }
123
}
124