1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Analyze Tone Request |
4
|
|
|
*/ |
5
|
|
|
namespace IBM\Watson\Service\ToneAnalyzer\Message; |
6
|
|
|
|
7
|
|
|
use GuzzleHttp\Exception\ClientException; |
8
|
|
|
use GuzzleHttp\Psr7\Request; |
9
|
|
|
use IBM\Watson\Common\Exception\AuthException; |
10
|
|
|
use IBM\Watson\Common\Message\AbstractRequest; |
11
|
|
|
|
12
|
|
|
/** |
13
|
|
|
* Analyze Tone Request |
14
|
|
|
* |
15
|
|
|
* @see IBM\Watson\Common\Message\AbstractRequest |
16
|
|
|
*/ |
17
|
|
|
class AnalyzeToneRequest extends AbstractRequest |
18
|
|
|
{ |
19
|
|
|
/** |
20
|
|
|
* Tone analyzer API url |
21
|
|
|
* |
22
|
|
|
* @var string |
23
|
|
|
*/ |
24
|
|
|
protected $endpoint = 'https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone'; |
25
|
|
|
|
26
|
|
|
/** |
27
|
|
|
* Get API endpoint |
28
|
|
|
* |
29
|
|
|
* @return string |
30
|
|
|
*/ |
31
|
|
|
public function getEndpoint() |
32
|
|
|
{ |
33
|
|
|
return $this->endpoint; |
34
|
|
|
} |
35
|
|
|
|
36
|
|
|
/** |
37
|
|
|
* Get data to be sent with the request |
38
|
|
|
* |
39
|
|
|
* @return array required request data |
40
|
|
|
*/ |
41
|
|
|
public function getData() |
42
|
|
|
{ |
43
|
|
|
return [ |
44
|
|
|
'username' => $this->getUsername(), |
45
|
|
|
'password' => $this->getPassword(), |
46
|
|
|
'version' => $this->getVersion(), |
47
|
|
|
'text' => $this->getText(), |
48
|
|
|
]; |
49
|
|
|
} |
50
|
|
|
|
51
|
|
|
/** |
52
|
|
|
* Send request with data |
53
|
|
|
* |
54
|
|
|
* @param mixed $data |
55
|
|
|
* @throws AuthException |
56
|
|
|
* @throws \Exception |
57
|
|
|
* |
58
|
|
|
* @return \IBM\Watson\Service\ToneAnalyzer\Message\AnalyzeToneResponse |
59
|
|
|
*/ |
60
|
|
|
public function sendData($data) |
61
|
|
|
{ |
62
|
|
|
$request = new Request( |
63
|
|
|
'GET', |
64
|
|
|
$this->getEndpoint() . '?' . http_build_query(['version' => $data['version'], 'text' => $data['text']]), |
65
|
|
|
['Authorization' => 'Basic ' . base64_encode($data['username'] . ':' . $data['password'])] |
66
|
|
|
); |
67
|
|
|
|
68
|
|
|
try { |
69
|
|
|
$response = $this->httpClient->send($request); |
70
|
|
|
|
71
|
|
|
if ($response->getStatusCode() != 200) { |
72
|
|
|
throw new \Exception($response->getBody()->getContents(), $response->getStatusCode()); |
73
|
|
|
} |
74
|
|
|
} catch (ClientException $e) { |
75
|
|
|
switch ($e->getCode()) { |
76
|
|
|
case 401: |
77
|
|
|
throw new AuthException('Invalid credentials provided'); |
78
|
|
|
break; |
|
|
|
|
79
|
|
|
case 400: |
80
|
|
|
throw new \InvalidArgumentException('Missing a required parameter or invalid parameter value.'); |
81
|
|
|
break; |
|
|
|
|
82
|
|
|
default: |
83
|
|
|
throw $e; |
84
|
|
|
break; |
|
|
|
|
85
|
|
|
} |
86
|
|
|
} |
87
|
|
|
|
88
|
|
|
return $this->response = new AnalyzeToneResponse($this, $response->getBody()); |
89
|
|
|
} |
90
|
|
|
|
91
|
|
|
/** |
92
|
|
|
* Set API version |
93
|
|
|
* |
94
|
|
|
* @param $value |
95
|
|
|
* @return AbstractRequest |
96
|
|
|
*/ |
97
|
|
|
public function setVersion($value) |
98
|
|
|
{ |
99
|
|
|
return $this->setParameter('version', $value); |
100
|
|
|
} |
101
|
|
|
|
102
|
|
|
/** |
103
|
|
|
* Set API version |
104
|
|
|
* |
105
|
|
|
* @return mixed |
106
|
|
|
*/ |
107
|
|
|
public function getVersion() |
108
|
|
|
{ |
109
|
|
|
return $this->getParameter('version'); |
110
|
|
|
} |
111
|
|
|
|
112
|
|
|
/** |
113
|
|
|
* Set text to analyze |
114
|
|
|
* |
115
|
|
|
* @param $value |
116
|
|
|
* @return AbstractRequest |
117
|
|
|
*/ |
118
|
|
|
public function setText($value) |
119
|
|
|
{ |
120
|
|
|
return $this->setParameter('text', $value); |
121
|
|
|
} |
122
|
|
|
|
123
|
|
|
/** |
124
|
|
|
* Get text to analyze |
125
|
|
|
* |
126
|
|
|
* @return mixed |
127
|
|
|
*/ |
128
|
|
|
public function getText() |
129
|
|
|
{ |
130
|
|
|
return $this->getParameter('text'); |
131
|
|
|
} |
132
|
|
|
} |
133
|
|
|
|
This check looks for unreachable code. It uses sophisticated control flow analysis techniques to find statements which will never be executed.
Unreachable code is most often the result of
return
,die
orexit
statements that have been added for debug purposes.In the above example, the last
return false
will never be executed, because a return statement has already been met in every possible execution path.