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';
|
||||
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 */
|
||||
/*************/
|
||||
|
@ -61,51 +69,122 @@
|
|||
|
||||
|
||||
|
||||
|
||||
/* ENVOI ET CONSTRUCTION D'UNE REQUETE
|
||||
*
|
||||
* @request_name<String> Nom de la requete en question
|
||||
* @parameters<Array> Liste des parametres de la requete
|
||||
*
|
||||
* @return response<Array> Reponse HTTP au format norme ou FAUX si une erreur occure
|
||||
*
|
||||
*/
|
||||
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 response<Array> Reponse HTTP au format norme ou FAUX si une erreur occure
|
||||
* @return filledRequest<Array> Renvoie la requete avec les bons parametres
|
||||
*
|
||||
*/
|
||||
public function send($request_name, $parameters=array()){
|
||||
private function build($request_name, $parameters=array()){
|
||||
/* [0] Gestion des INPUTS
|
||||
=========================================================*/
|
||||
// On retourne une erreur si la requete n'existe pas
|
||||
if( !isset($this->requests[$request_name]) ) return false;
|
||||
|
||||
|
||||
/* [1] Remplacement des parametres (valeurs globales)
|
||||
=========================================================*/
|
||||
/* (1) On enregistre une copie de la requete */
|
||||
// On enregistre une copie de la requete
|
||||
$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);
|
||||
|
||||
/* (3) Remplacement dans les headers */
|
||||
/* (2) Remplacement dans les headers */
|
||||
foreach($request['headers'] as $name=>$value)
|
||||
$request['headers'][$name] = $this->fillParameters($value, $parameters);
|
||||
|
||||
/* (3) Remplacement dans les postdata */
|
||||
/* (2) Remplacement dans les postdata */
|
||||
foreach($request['postdata'] as $name=>$value)
|
||||
$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;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,24 +2,30 @@
|
|||
"name": "socioview_api",
|
||||
"version": "0.1",
|
||||
"description": "API de la plateforme d'acquisition et de visualisation de donnees dans le cadre d'etudes relationnelles en sociologie",
|
||||
|
||||
"requests": {
|
||||
|
||||
"parse-call-log": {
|
||||
"url": "socioview/api/",
|
||||
"method": "POST",
|
||||
"headers": { "Authorization": "Digest @token" },
|
||||
"postdata": { "username": "@username", "password": "@password" },
|
||||
"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.",
|
||||
"postdata": {
|
||||
"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"},
|
||||
{"data": "json"}
|
||||
]
|
||||
|
||||
"generate-network-chart-data": {
|
||||
"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();
|
||||
var_dump( $api->send('parse-call-log', array(
|
||||
'@token'=> 'bb21158c733229347bd4e681891e213d94c685bf',
|
||||
'@username' => 'xdrm',
|
||||
'@password'=> 'mypassword'
|
||||
) ));
|
||||
|
||||
$response = $api->send('generate-network-chart-data', array(
|
||||
'@token'=> '48e701d4e72e4e35bc37c9a800b49d5400734d7b'
|
||||
));
|
||||
|
||||
var_dump($response);
|
||||
|
||||
?>
|
|
@ -40,7 +40,6 @@ var TOKEN = {
|
|||
|
||||
// On lance la requete
|
||||
api.send(request, function(answer){
|
||||
console.log(answer);
|
||||
// Si la generation effectuee, on recharge la page
|
||||
if( answer.ModuleError == 0 )
|
||||
reload();
|
||||
|
|
Loading…
Reference in New Issue