-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathPersonalization.php
More file actions
104 lines (89 loc) · 2.39 KB
/
Personalization.php
File metadata and controls
104 lines (89 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
namespace GetStream\Stream;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Exception\ClientException;
class Personalization
{
const API_ENDPOINT = 'https://personalization.stream-io-api.com/personalization/v1.0/';
/**
* @var GuzzleClient
*/
private $client;
/**
* @var string
*/
private $apiKey;
/**
* @var string
*/
private $apiSecret;
/**
* @param ClientInterface $streamClient
* @param string $apiKey
* @param string $apiSecret
*/
public function __construct(ClientInterface $streamClient, $apiKey, $apiSecret)
{
$this->apiKey = $apiKey;
$this->apiSecret = $apiSecret;
$this->client = new GuzzleClient([
'base_uri' => self::API_ENDPOINT,
'timeout' => $streamClient->timeout,
'handler' => Util::handlerStack($streamClient, $apiKey, $apiSecret, 'personalization'),
]);
}
/**
* @param string $resource
* @param array $params
*
* @return array
*/
public function get($resource, array $params)
{
return $this->request('GET', $resource, $params);
}
/**
* @param string $resource
* @param array $params
*
* @return array
*/
public function post($resource, array $params)
{
return $this->request('POST', $resource, $params);
}
/**
* @param string $resource
* @param array $params
*
* @return array
*/
public function delete($resource, array $params)
{
return $this->request('DELETE', $resource, $params);
}
/**
* @param string $method
* @param string $resource
* @param array $params
*
* @return array
*/
private function request($method, $resource, array $params)
{
$queryParams = ['api_key' => $this->apiKey];
$queryParams += $params;
$uri = $resource .'/?'. http_build_query($queryParams);
try {
$response = $this->client->request($method, $uri);
} catch (ClientException $e) {
$response = $e->getResponse();
$msg = $response->getBody();
$code = $response->getStatusCode();
$previous = $e;
throw new StreamFeedException($msg, $code, $previous);
}
$body = $response->getBody()->getContents();
return json_decode($body, true);
}
}