GlisWeb framework
_rest.tools.php
Vai alla documentazione di questo file.
1 <?php
2 
23  function restCall( $url, $method = METHOD_GET, $data = NULL, $datatype = MIME_APPLICATION_JSON, $answertype = MIME_APPLICATION_JSON, &$status = NULL, $headers = array(), $user = NULL, $pasw = NULL, &$error = NULL ) {
24 
25  // inizializzo l'oggetto CURL
26  $curl = curl_init();
27 
28  // registro la risposta
29  curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
30 
31  // evito l'inclusione degli header nell'output
32  curl_setopt( $curl, CURLOPT_HEADER, false );
33 
34  // salto la verifica ssl
35  curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
36 
37  // salto la verifica dell'host
38  curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
39 
40  // imposto un timeout per la connessione
41  curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT, 30 );
42 
43  // autenticazione
44  if( $user !== NULL && $pasw !== NULL ) {
45 
46  curl_setopt( $curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
47 
48  curl_setopt( $curl, CURLOPT_USERPWD, $user . ':' . $pasw );
49 
50  }
51 
52  // verifico che ci siano dati da inviare
53 # if( $data !== NULL && is_array( $data ) && count( $data ) > 0 ) {
54  if( true ) {
55 
56  // codifico i dati
57  switch( $datatype ) {
58 
59  case 'headers':
60  $headers = array_merge( $headers, $data );
61  break;
62 
64  $data = json_encode( $data, JSON_UNESCAPED_SLASHES );
65  $headers = array_merge( $headers, array( 'Content-Type' => MIME_APPLICATION_JSON, 'Content-Length' => strlen( $data ) ) );
66  curl_setopt( $curl, CURLOPT_POSTFIELDS, $data );
67  break;
68 
70  $data = http_build_query( $data );
71  curl_setopt( $curl, CURLOPT_POSTFIELDS, $data );
72  break;
73 
74  case 'query':
75  $data = http_build_query( $data );
76  $url = sprintf( "%s?%s", $url, $data );
77  break;
78 
79  }
80 
81  // log
82  logWrite( 'invio a ' . $url . ' (' . $method . ') dati: ' . serialize( $data ), 'rest', LOG_DEBUG );
83 
84  }
85 
86  // impostazione del tipo di dati accettato
87  $headers = array_merge( $headers, array( 'Accept' => $answertype ) );
88 
89  // impostazione degli headers
90  if( ! empty( $headers ) ) {
91  foreach( $headers as $k => $d ) { $hdrs[] = $k . ': ' . $d; }
92  curl_setopt( $curl, CURLOPT_HTTPHEADER, $hdrs );
93  }
94 
95  // imposto il metodo
96  curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, $method );
97 
98  // imposto l'url
99  curl_setopt( $curl, CURLOPT_URL, $url );
100 
101  // debug
102  // curl_setopt( $curl, CURLOPT_VERBOSE, true);
103  // curl_setopt( $curl, CURLOPT_STDERR, fopen( DIRECTORY_BASE . DIRECTORY_LOG . 'curl.' . date('YmdHis') . '.log', 'w'));
104 
105  // esecuzione della chiamata
106  $result = curl_exec( $curl );
107  $status = curl_getinfo( $curl, CURLINFO_HTTP_CODE );
108  $error = curl_error( $curl );
109 
110  // debug
111  // var_dump( $url );
112  // var_dump( $curl );
113  // var_dump( $result );
114  // var_dump( $status );
115  // var_dump( $error );
116  // var_dump( $headers );
117  // var_dump( $data );
118 
119  // log
120  if( ! empty( $error ) || substr( $status, 0, 1 ) != 2 ) {
121  logWrite( 'risposta ' . $status . ( ( ! empty( $error ) ) ? '/' . $error : NULL ) . ' ricevuta da ' . $url . ' (' . $method . '): ' . serialize( $result ), 'rest' , LOG_ERR );
122  } else {
123  logWrite( 'risposta ' . $status . ' ricevuta da ' . $url . ' (' . $method . '): ' . serialize( $result ), 'rest' , LOG_DEBUG );
124  }
125 
126  // chiusura della richiesta
127  curl_close( $curl );
128 
129  // decodifica della risposta
130  switch( $answertype ) {
131 
133  $result = json_decode( $result , true );
134  break;
135 
136  }
137 
138  // restituzione della risposta
139  return $result;
140 
141  }
142 
143  function restGetValue( $k, $url, $data = NULL, $datatype = MIME_APPLICATION_JSON, $answertype = MIME_APPLICATION_JSON, &$status = NULL, $headers = array(), $user = NULL, $pasw = NULL, &$error = NULL ) {
144 
145  $r = restCall( $url, METHOD_GET, $data, $datatype, $answertype, $status, $headers, $user, $pasw, $error );
146 
147  if( isset( $r[ $k ] ) ) {
148  return $r[ $k ];
149  } else {
150  return false;
151  }
152 
153  }
154 
155 ?>
logWrite( $m, $f='site', $l=LOG_NOTICE, $d=DIRECTORY_LOG, $t=CURRENT_LOG_LEVEL, $s=SITE_STATUS)
scrive un messaggio nei log del sito
Definition: _log.utils.php:48
if(!empty($_REQUEST['id'])) $d
restCall( $url, $method=METHOD_GET, $data=NULL, $datatype=MIME_APPLICATION_JSON, $answertype=MIME_APPLICATION_JSON, &$status=NULL, $headers=array(), $user=NULL, $pasw=NULL, &$error=NULL)
esegue una chiamata REST
Definition: _rest.tools.php:23
restGetValue( $k, $url, $data=NULL, $datatype=MIME_APPLICATION_JSON, $answertype=MIME_APPLICATION_JSON, &$status=NULL, $headers=array(), $user=NULL, $pasw=NULL, &$error=NULL)
$r
Definition: _osm.php:25
const METHOD_GET
Definition: _config.php:280
const MIME_APPLICATION_JSON
const MIME_MULTIPART_FORM_DATA