Request::type()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
namespace KWTClient\Request;
3
4
use GuzzleHttp\Psr7\Uri;
5
6
class Request implements RequestInterface
7
{
8
    /**
9
     * @var string
10
     */
11
    protected $serviceUri;
12
13
    /**
14
     * @var
15
     */
16
    protected $params;
17
18
    /**
19
     * Request constructor.
20
     *
21
     * @param string $keyword
22
     * @param string $serviceUri
23
     */
24
    public function __construct($keyword, $serviceUri)
25
    {
26
        $this->serviceUri = $serviceUri;
27
        $this->addQueryParam('keyword', $keyword);
28
    }
29
30
    /**
31
     * Country, you want to get keyword suggestions for.
32
     *
33
     * @param string $countryCode Two characters of country code
34
     *
35
     * @return $this
36
     */
37
    public function country($countryCode = 'us')
38
    {
39
        $this->addQueryParam('country', $countryCode);
40
        return $this;
41
    }
42
43
    /**
44
     * Language, you want to get keyword suggestions for.
45
     *
46
     * @param string $countryCode Two characters of country code
0 ignored issues
show
Bug introduced by
There is no parameter named $countryCode. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
47
     *
48
     * @return $this
49
     */
50
    public function language($language = 'en')
51
    {
52
        $this->addQueryParam('language', $language);
53
        return $this;
54
    }
55
56
    /**
57
     * Use this parameter to specify negative keywords, i.e. the keywords that you want to exclude from your results.
58
     * For example, an API call that contains "keyword=iphone&exclude=case|game|price" will return keyword suggestions
59
     * for the keyword "iphone" but there will be no keyword suggestions that contain words "case", "game", or "price".
60
     * Meaning the keyword suggestion "best iphone price" will not show up in the results.
61
     *
62
     * @param array $keywords
63
     *
64
     * @return $this
65
     */
66
    public function excludeKeywords(array $keywords = [])
67
    {
68
        $this->addQueryParam('exclude', join('|', $keywords));
69
        return $this;
70
    }
71
72
    /**
73
     * Allows to get Search Volume, CPC and AdWords Competition data for
74
     * keywords in English language if this parameter is set to "true".
75
     *
76
     * @param bool $flag [Default: false]
77
     *
78
     * @return $this
79
     */
80
    public function metrics($flag = false)
81
    {
82
        $this->addQueryParam('metrics', !!$flag ? "true" : "false");
83
        return $this;
84
    }
85
86
    /**
87
     * Type of search query.
88
     * Available types are: "suggestions" and "questions".
89
     *
90
     * @param string $type [Default: suggestions]
91
     *
92
     * @return $this
93
     */
94
    public function type($type = 'suggestions')
95
    {
96
        $this->addQueryParam('type', $type);
97
        return $this;
98
    }
99
100
    /**
101
     * Allows to get the full set of autocomplete results.
102
     * Please note that certain percent of requests might return an error
103
     * if this parameter is set to "true".
104
     *
105
     * @param bool|false $flag [Default: false]
106
     *
107
     * @return $this
108
     */
109
    public function complete($flag = false)
110
    {
111
        $this->addQueryParam('complete', !!$flag ? "true" : "false" );
112
        return $this;
113
    }
114
115
    /**
116
     * @param string $paramName
117
     * @param string $paramValue
118
     */
119
    protected function addQueryParam($paramName, $paramValue)
120
    {
121
        $this->params[$paramName] = $paramValue;
122
    }
123
124
    /**
125
     * @return \Psr\Http\Message\UriInterface
126
     */
127
    public function getUri()
128
    {
129
        $uri = new Uri($this->serviceUri);
130
        return $uri->withQuery(\GuzzleHttp\Psr7\build_query($this->params));
131
    }
132
}
133