API Fonctionnelle avec method/url/postdata/header
Fonctionnement avec manifest.json
This commit is contained in:
parent
a9f6b189be
commit
7a57bf96af
121
api/client.php
121
api/client.php
|
@ -15,6 +15,14 @@
|
||||||
private $config_path = 'f/json/manifest/api';
|
private $config_path = 'f/json/manifest/api';
|
||||||
public $error;
|
public $error;
|
||||||
|
|
||||||
|
// liste des methodes
|
||||||
|
public static $METHODS = array(
|
||||||
|
'POST' => array( CURLOPT_POST, true ),
|
||||||
|
'GET' => array( CURLOPT_HTTPGET, true ),
|
||||||
|
'PUT' => array( CURLOPT_CUSTOMREQUEST, 'PUT' ),
|
||||||
|
'DELETE' => array( CURLOPT_CUSTOMREQUEST, 'DELETE' )
|
||||||
|
);
|
||||||
|
|
||||||
/*************/
|
/*************/
|
||||||
/* ATTRIBUTS */
|
/* ATTRIBUTS */
|
||||||
/*************/
|
/*************/
|
||||||
|
@ -61,51 +69,122 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* CONSTRUCTION D'UNE REQUETE
|
|
||||||
|
/* ENVOI ET CONSTRUCTION D'UNE REQUETE
|
||||||
*
|
*
|
||||||
* @request_name<String> Nom de la requete
|
* @request_name<String> Nom de la requete en question
|
||||||
* @parameters<Array> Liste des parametres de la requete
|
* @parameters<Array> Liste des parametres de la requete
|
||||||
*
|
*
|
||||||
* @return response<Array> Reponse HTTP au format norme ou FAUX si une erreur occure
|
* @return response<Array> Reponse HTTP au format norme ou FAUX si une erreur occure
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function send($request_name, $parameters=array()){
|
public function send($request_name, $parameters=array()){
|
||||||
|
/* [1] On construit la requete avec les parametres
|
||||||
|
=========================================================*/
|
||||||
|
$build = $this->build($request_name, $parameters);
|
||||||
|
|
||||||
|
// Si la construction a echoue, on retourne une erreur
|
||||||
|
if( $build === false ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Header et pre-data de la requete
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) On definit l'URL */
|
||||||
|
$curl = curl_init($build['url']);
|
||||||
|
|
||||||
|
// permet de recupere le resultat au lieu de l'afficher
|
||||||
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
|
||||||
|
|
||||||
|
/* (2) On definit la methode */
|
||||||
|
$method_arguments = self::$METHODS[ $build['method'] ];
|
||||||
|
|
||||||
|
curl_setopt($curl, $method_arguments[0], $method_arguments[1]);
|
||||||
|
|
||||||
|
|
||||||
|
/* (3) On definit les headers */
|
||||||
|
$headers = array();
|
||||||
|
|
||||||
|
// On construit le header au bon format : 'name: value'
|
||||||
|
foreach($build['headers'] as $name=>$value)
|
||||||
|
array_push($headers, $name.': '.$value);
|
||||||
|
|
||||||
|
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
||||||
|
|
||||||
|
|
||||||
|
/* (4) On definit les donnees POST */
|
||||||
|
$postdata = '';
|
||||||
|
|
||||||
|
// On formatte les donnees au format 'key=value&key=value'
|
||||||
|
foreach($build['postdata'] as $key=>$value)
|
||||||
|
$postdata .= $key.'='.$value.'&';
|
||||||
|
rtrim($postdata); // on supprime le '&' a la fin s'il y a
|
||||||
|
|
||||||
|
// On envoie les donnees
|
||||||
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] Execution de la requete et recup de la response
|
||||||
|
=========================================================*/
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
curl_close($curl);
|
||||||
|
|
||||||
|
|
||||||
|
/* [5] On retourne la reponse
|
||||||
|
=========================================================*/
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* CONSTRUCTION D'UNE REQUETE
|
||||||
|
*
|
||||||
|
* @request_name<String> Nom de la requete
|
||||||
|
* @parameters<Array> Liste des parametres de la requete
|
||||||
|
*
|
||||||
|
* @return filledRequest<Array> Renvoie la requete avec les bons parametres
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private function build($request_name, $parameters=array()){
|
||||||
/* [0] Gestion des INPUTS
|
/* [0] Gestion des INPUTS
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// On retourne une erreur si la requete n'existe pas
|
// On retourne une erreur si la requete n'existe pas
|
||||||
if( !isset($this->requests[$request_name]) ) return false;
|
if( !isset($this->requests[$request_name]) ) return false;
|
||||||
|
|
||||||
|
// On enregistre une copie de la requete
|
||||||
/* [1] Remplacement des parametres (valeurs globales)
|
|
||||||
=========================================================*/
|
|
||||||
/* (1) On enregistre une copie de la requete */
|
|
||||||
$request = $this->requests[$request_name];
|
$request = $this->requests[$request_name];
|
||||||
|
|
||||||
/* (2) Remplacement dans l'URL */
|
|
||||||
|
/* [1] Gestion de la methode
|
||||||
|
=========================================================*/
|
||||||
|
// Si la methode n'est pas prise en compte, on retourne une erreur
|
||||||
|
if( !isset( self::$METHODS[$request['method']] ) ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Remplacement des parametres (valeurs globales)
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) Remplacement dans l'URL */
|
||||||
$request['url'] = $this->fillParameters($request['url'], $parameters);
|
$request['url'] = $this->fillParameters($request['url'], $parameters);
|
||||||
|
|
||||||
/* (3) Remplacement dans les headers */
|
/* (2) Remplacement dans les headers */
|
||||||
foreach($request['headers'] as $name=>$value)
|
foreach($request['headers'] as $name=>$value)
|
||||||
$request['headers'][$name] = $this->fillParameters($value, $parameters);
|
$request['headers'][$name] = $this->fillParameters($value, $parameters);
|
||||||
|
|
||||||
/* (3) Remplacement dans les postdata */
|
/* (2) Remplacement dans les postdata */
|
||||||
foreach($request['postdata'] as $name=>$value)
|
foreach($request['postdata'] as $name=>$value)
|
||||||
$request['postdata'][$name] = $this->fillParameters($value, $parameters);
|
$request['postdata'][$name] = $this->fillParameters($value, $parameters);
|
||||||
|
|
||||||
|
|
||||||
/* [2] On remplace dans les valeurs d'I/O
|
/* [3] Retour de la requete construite
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
/* (1) Remplacement dans les INPUT */
|
|
||||||
foreach($request['input'] as $i=>$input)
|
|
||||||
foreach($input as $name=>$value)
|
|
||||||
$request['input'][$i][$name] = $this->fillParameters($value, $parameters);
|
|
||||||
|
|
||||||
/* (2) Remplacement dans les OUTPUT */
|
|
||||||
foreach($request['output'] as $i=>$output)
|
|
||||||
foreach($output as $name=>$value)
|
|
||||||
$request['output'][$i][$name] = $this->fillParameters($value, $parameters);
|
|
||||||
|
|
||||||
|
|
||||||
return $request;
|
return $request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,24 +2,30 @@
|
||||||
"name": "socioview_api",
|
"name": "socioview_api",
|
||||||
"version": "0.1",
|
"version": "0.1",
|
||||||
"description": "API de la plateforme d'acquisition et de visualisation de donnees dans le cadre d'etudes relationnelles en sociologie",
|
"description": "API de la plateforme d'acquisition et de visualisation de donnees dans le cadre d'etudes relationnelles en sociologie",
|
||||||
|
|
||||||
"requests": {
|
"requests": {
|
||||||
|
|
||||||
"parse-call-log": {
|
"parse-call-log": {
|
||||||
"url": "socioview/api/",
|
"url": "socioview/api/",
|
||||||
"method": "POST",
|
"method": "POST",
|
||||||
"headers": { "Authorization": "Digest @token" },
|
"headers": { "Authorization": "Digest @token" },
|
||||||
"postdata": { "username": "@username", "password": "@password" },
|
"postdata": {
|
||||||
"description": "Renvoie a partir du contenu d'un fichier de journal d'appel XML un objet classant les relations SMS/MMS par nombre de messages recus et emis, et de meme pour les appels classes par nombre d'appels.",
|
"path": "call_log/unserialize",
|
||||||
|
"data": "[@xmlstring]"
|
||||||
|
},
|
||||||
|
"description": "Renvoie a partir du contenu d'un fichier de journal d'appel XML un objet classant les relations SMS/MMS par nombre de messages recus et emis, et de meme pour les appels classes par nombre d'appels."
|
||||||
|
},
|
||||||
|
|
||||||
"input": [
|
|
||||||
{"path": "callLog/unserialize"},
|
|
||||||
{"data": "array"}
|
|
||||||
],
|
|
||||||
|
|
||||||
"output": [
|
|
||||||
{"ModuleError": "int"},
|
"generate-network-chart-data": {
|
||||||
{"data": "json"}
|
"url": "socioview/api/",
|
||||||
]
|
"method": "POST",
|
||||||
|
"headers": { "Authorization": "Digest @token" },
|
||||||
|
"postdata": {
|
||||||
|
"path": "charts/network_data"
|
||||||
|
},
|
||||||
|
"description": "Renvoie un jeu de donnees pour un graphique de type network"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
11
automate.php
11
automate.php
|
@ -73,10 +73,11 @@
|
||||||
|
|
||||||
|
|
||||||
$api = new client();
|
$api = new client();
|
||||||
var_dump( $api->send('parse-call-log', array(
|
|
||||||
'@token'=> 'bb21158c733229347bd4e681891e213d94c685bf',
|
$response = $api->send('generate-network-chart-data', array(
|
||||||
'@username' => 'xdrm',
|
'@token'=> '48e701d4e72e4e35bc37c9a800b49d5400734d7b'
|
||||||
'@password'=> 'mypassword'
|
));
|
||||||
) ));
|
|
||||||
|
var_dump($response);
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -40,7 +40,6 @@ var TOKEN = {
|
||||||
|
|
||||||
// On lance la requete
|
// On lance la requete
|
||||||
api.send(request, function(answer){
|
api.send(request, function(answer){
|
||||||
console.log(answer);
|
|
||||||
// Si la generation effectuee, on recharge la page
|
// Si la generation effectuee, on recharge la page
|
||||||
if( answer.ModuleError == 0 )
|
if( answer.ModuleError == 0 )
|
||||||
reload();
|
reload();
|
||||||
|
|
Loading…
Reference in New Issue