-
Notifications
You must be signed in to change notification settings - Fork 2
/
GeoAPI.php
116 lines (93 loc) · 2.75 KB
/
GeoAPI.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
<?php
class GeoAPI {
private $conf = array(
'url' => 'http://apiv1.geoapi.es/',
'type' => 'JSON',
'key' => '',
'sandbox' => 0
);
private $_data = array(
'lastQuery' => array(
'url' => '',
'params' => array()
),
'lastResult' => array(
'status' => 0,
'data' => array()
)
);
public function setConfig($key, $value){
$this->conf[$key] = $value;
}
public function getLastQuery(){
return $this->$_data['lastQuery'];
}
public function getLastResult(){
return $this->$_data['lastResult'];
}
private function _call($accion, $params, $deferred){
$params = array_merge($params, $this->conf);
unset($params['url']);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_TIMEOUT => 15,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_ENCODING => 'gzip,deflate',
CURLOPT_HTTPHEADER => array("Cache-Control: max-age=0", "Accept-Charset: utf-8;"),
CURLOPT_URL => sprintf("%s%s?%s", $this->conf['url'], $accion, http_build_query($params))
));
$resp = curl_exec($curl);
if(curl_errno($curl) || curl_getinfo($curl, CURLINFO_HTTP_CODE) != 200){
$deferred->reject($resp);
echo "Error: " . curl_error($curl);
}else{
$data = json_decode($resp, true);
$this->_data = array(
'lastQuery' => array(
'url' => sprintf("%s%s", $this->conf['url'], $accion),
'params' => $params
),
'lastResult' => array(
'status' => curl_getinfo($curl, CURLINFO_HTTP_CODE),
'data' => $data
)
);
$deferred->resolve($data);
}
curl_close($curl);
return $deferred->promise();
}
public function calles($params){ /*CPRO, CMUM, CUN, CPOS*/
$deferred = new React\Promise\Deferred();
return $this->_call('calles', $params, $deferred);
}
public function comunidades($params){ /**/
$deferred = new React\Promise\Deferred();
return $this->_call('comunidades', $params, $deferred);
}
public function cps($params){ /*CPRO, CMUM, CUN*/
$deferred = new React\Promise\Deferred();
return $this->_call('cps', $params, $deferred);
}
public function municipios($params){ /*CPRO*/
$deferred = new React\Promise\Deferred();
return $this->_call('municipios', $params, $deferred);
}
public function nucleos($params){ /*CPRO, CMUM, NENTSI50*/
$deferred = new React\Promise\Deferred();
return $this->_call('nucleos', $params, $deferred);
}
public function poblaciones($params){ /*CPRO, CMUM*/
$deferred = new React\Promise\Deferred();
return $this->_call('poblaciones', $params, $deferred);
}
public function provincias($params){ /*CCOM*/
$deferred = new React\Promise\Deferred();
return $this->_call('provincias', $params, $deferred);
}
public function qcalles($params){ /*QUERY*/
$deferred = new React\Promise\Deferred();
return $this->_call('qcalles', $params, $deferred);
}
}
?>