RestClient.php
2.35 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
105
106
107
108
109
<?php
/**
* @author Weavora Team <hello@weavora.com>
* @link http://weavora.com
* @copyright Copyright (c) 2011 Weavora LLC
*/
/**
* Simple client for testing
*/
class RestClient
{
//---
protected $apiKey = null;
protected $sharedKey = null;
protected $urlBase = null;
public function __construct($urlBase, $apiKey, $sharedKey)
{
$this->urlBase = $urlBase;
$this->apiKey = $apiKey;
$this->sharedKey = $sharedKey;
}
public function get($url, $params = array('format' => 'json'))
{
return $this->httpRequest($url, $params, 'GET');
}
public function post($url, $params = array('format' => 'json'))
{
return $this->httpRequest($url, $params, 'POST');
}
public function delete($url, $params = array('format' => 'json'))
{
return $this->httpRequest($url, $params, 'DELETE');
}
public function put($url, $params = array('format' => 'json'))
{
return $this->httpRequest($url, $params, 'PUT');
}
protected function _convertParams($params)
{
return $result = http_build_query($params);
}
public function getHttpCode()
{
return $this->httpCode;
}
public function httpRequest($url, $postfields = array(), $method = "GET")
{
$postfields = array_merge($postfields, array('format' => 'json'));
foreach ($postfields as $key => $value) {
if (is_null($value)) {
unset($postfields[$key]);
}
}
$url = $this->urlBase . $url;
$ci = curl_init();
/* Curl settings */
curl_setopt($ci, CURLOPT_HEADER, false);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
$postfields = $this->_convertParams($postfields);
switch ($method) {
case 'GET':
$url .= "?" . $postfields;
break;
case 'POST':
curl_setopt($ci, CURLOPT_POST, true);
if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}
break;
case 'DELETE':
if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
break;
case 'PUT':
// curl_setopt($ci, CURLOPT_PUT, true);
if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, "PUT");
break;
}
curl_setopt($ci, CURLOPT_URL, $url);
$response = curl_exec($ci);
$this->httpCode = curl_getinfo($ci, CURLINFO_HTTP_CODE);
curl_close($ci);
return (array) json_decode($response);
}
}