-
Notifications
You must be signed in to change notification settings - Fork 0
/
WebRequest.php
119 lines (93 loc) · 2.26 KB
/
WebRequest.php
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
110
111
112
113
114
115
116
117
118
119
<?php
class WebRequest {
private $url, $params, $post_data, $cache;
public function __construct($url)
{
$this->url = $url;
$this->params = NULL;
$this->post_data = array();
$this->cache = new GCCache(API_CACHE_TIME, CACHEPATH);
}
public function execute_request()
{
$oauth = new OAuthSimple(API_KEY, API_SECRET);
$curl = new SimpleCurl();
$post_count = count($this->post_data);
if (!is_null($this->params))
{
$oauth->setParameters($this->params);
}
$oauth->setPath($this->url);
if ($post_count == 0)
{
$oAuthResult = $oauth->sign();
$result = $curl->get($oAuthResult['signed_url']);
}
else
{
$oauth->setAction('POST');
$oAuthResult = $oauth->sign();
$result = $curl->post($this->url, array("Authorization: ".$oAuthResult['header']), $post_count, self::encode_data($this->post_data));
}
$curl::close();
return $result;
}
public function execute_cached_request()
{
$x = $this->cache->getCache($this->url, $this->params);
if ($x === FALSE)
{
$data = $this->execute_request();
$x = $this->cache->setCache($data, $this->url, $this->params);
}
return $x;
}
public function setup_params($options = NULL, $post_data = array())
{
$this->post_data = $post_data;
if (count($options) > 0 && count($post_data) > 0)
{
$this->params = array_merge($options, $post_data);
}
else if (count($options) > 0)
{
$this->params = $options;
}
else if (count($post_data) > 0)
{
$this->params = $post_data;
}
return NULL;
}
public static function dbug($value, $kill = FALSE)
{
echo "<pre>";
var_dump($value);
if ($kill)
{
die();
}
echo "</pre>";
}
public static function encode_data($unencoded)
{
$encoded = '';
foreach ($unencoded as $key=>$value)
{
$encoded .= self::escape_data($key).'='.self::escape_data($value).'&';
}
$encoded = rtrim($encoded, '&');
return $encoded;
}
public static function escape_data($string)
{
if ($string === 0) { return 0; }
if ($string == '0') { return '0'; }
if (strlen($string) == 0) { return ''; }
if (is_array($string))
{
throw new Exception('Hey, no arrays to escape_data');
}
return rawurlencode($string);
}
}