<?php
/*************************************************************************************************/
/***************************** DEFINITION D'UNE CLASSE POUR L'API ******************************/
/*************************************************************************************************/
class DIAZ_API
{
protected $server = '';
protected $endPoint = '';
private $authTokens = null;
public function __construct($endPoint, $server)
{
$this->server = $server;
$this->endPoint = $endPoint;
}
protected function diaz_exec($func, $method = 'GET', $data = null)
{
$url = $this->endPoint . $func;
if ($method == 'GET' && is_array($data) && count($data)) {
$url .= '?' . http_build_query($data);
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if ($method == 'POST') {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = array(
'Content-Type: application/json'
);
if (isset($this->authTokens->access_token)) {
$headers[] = 'Authorization: Bearer ' . $this->authTokens->access_token;
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if (curl_errno($ch)) {
curl_close($ch);
throw new Exception('Erreur cURL : ' . curl_error($ch));
} else {
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode>=200 && $httpCode<=299) {
$decoded_response = json_decode($response, false);
} else {
$decoded_response = null;
}
if ($decoded_response !== null) {
return $decoded_response;
} else {
throw new Exception('Erreur : '.$httpCode.' (' . $this->endPoint . $url . ")\n".var_export($response, true));
}
}
}
public function login($username, $password)
{
$loginData = array('username' => $username,
'password' => $password,
'server' => $this->server
);
try {
$this->authTokens = $this->diaz_exec('auth/login', 'POST', $loginData);
} catch (Exception $e) {
die($e->getMessage());
}
}
public function logout()
{
// TODO: Appeler logout sur l'api.
$this->authTokens = null;
}
public function getListeFichier($fichier, $params = null) {
try {
return $this->diaz_exec($fichier, 'GET', $params);
} catch (Exception $e) {
die($e->getMessage());
}
}
public function getSearchFichier($fichier, $params) {
try {
return $this->diaz_exec($fichier.'/search', 'POST', $params);
} catch (Exception $e) {
die($e->getMessage());
}
}
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/