Gestion du prototype + gestion des variables
Le format de base a été établi. Les variables préfixées par '@' sont remplacés dans la requête, il reste la gestion des requêtes et des réponses en elles-mêmes.
This commit is contained in:
parent
8df60ac123
commit
a9f6b189be
|
@ -0,0 +1,146 @@
|
|||
<?php
|
||||
|
||||
namespace api;
|
||||
use \manager\ResourceDispatcher;
|
||||
use \manager\ManagerError;
|
||||
|
||||
/* CLASSE PERMETANT L'UTILISATION DU manifest.json POUR UTILISER DES APIS DIVERSES
|
||||
*
|
||||
* @return nomRetour<typeRetour> Description du retour
|
||||
*
|
||||
*/
|
||||
class client{
|
||||
|
||||
// Fichier de configuration par defaut
|
||||
private $config_path = 'f/json/manifest/api';
|
||||
public $error;
|
||||
|
||||
/*************/
|
||||
/* ATTRIBUTS */
|
||||
/*************/
|
||||
private $manifest = null; // Contiendra le tableau correspondant au JSON
|
||||
private $requests = array(); // Contiendra la liste des requetes de l'api et leurs parametres
|
||||
|
||||
private $name;
|
||||
private $description;
|
||||
private $version;
|
||||
|
||||
|
||||
/* CONSTRUCTEUR DU CLIENT DE L'API
|
||||
*
|
||||
* @config<String> Chemin du fichier de configuration de l'api
|
||||
*
|
||||
*/
|
||||
public function __construct($config=null){
|
||||
/* [0] Gestion du fichier de config si donne en param
|
||||
=========================================================*/
|
||||
if( $config !== null ) $this->config_path = $config;
|
||||
|
||||
/* [1] On recupere le contenu du fichier de config
|
||||
=========================================================*/
|
||||
$manifest = json_decode( ResourceDispatcher::getResource($this->config_path), true );
|
||||
|
||||
// Si erreur de parsage ou de fichier, on retourne une erreur
|
||||
if( $manifest === null ){
|
||||
$this->error = ManagerError::ParsingFailed;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* [2] On repartie et classe les donnees
|
||||
=========================================================*/
|
||||
/* (1) Informations generales */
|
||||
$name = $manifest['name'];
|
||||
$description = $manifest['description'];
|
||||
$version = $manifest['version'];
|
||||
|
||||
/* (2) Liste des requetes */
|
||||
$this->requests = $manifest['requests'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* 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
|
||||
*
|
||||
*/
|
||||
public function send($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 */
|
||||
$request = $this->requests[$request_name];
|
||||
|
||||
/* (2) Remplacement dans l'URL */
|
||||
$request['url'] = $this->fillParameters($request['url'], $parameters);
|
||||
|
||||
/* (3) Remplacement dans les headers */
|
||||
foreach($request['headers'] as $name=>$value)
|
||||
$request['headers'][$name] = $this->fillParameters($value, $parameters);
|
||||
|
||||
/* (3) 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
|
||||
=========================================================*/
|
||||
/* (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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* REMPLACE LES PARAMETRES DANS UNE CHAINE
|
||||
*
|
||||
* @before<String> Chaine a etudier et dans laquelle remplacer les parametres
|
||||
* @parameters<Array> Liste des parametres a remplacer (prefixes d'un '@')
|
||||
*
|
||||
* @return after<String> Chaine contenant les parametres de la liste @parameters
|
||||
*
|
||||
*/
|
||||
private function fillParameters($before, $parameters){
|
||||
// On initialise la valeur de retour
|
||||
$after = $before;
|
||||
|
||||
/* [1] On remplace les parametres prefixes par '@'
|
||||
=========================================================*/
|
||||
foreach($parameters as $name=>$value){
|
||||
$position = strpos($after, $name);
|
||||
|
||||
// Si on a trouve, on remplace le nom de variable par la valeur
|
||||
if( $position !== false )
|
||||
$after = substr($after, 0, $position) . $value . substr($after, $position+strlen($name) );
|
||||
|
||||
}
|
||||
|
||||
/* [2] On retourne la nouvelle chaine
|
||||
=========================================================*/
|
||||
return $after;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"name": "@api_name",
|
||||
"version": "@api_version_number",
|
||||
"description": "@api_description",
|
||||
|
||||
"requests": {
|
||||
|
||||
"@request_name":{
|
||||
"url": "@request_request_url",
|
||||
"headers": {
|
||||
"@header_name_1": "@header_value_1",
|
||||
"@header_name_2": "@header_value_2",
|
||||
},
|
||||
"method": "@request_http_method",
|
||||
"description": "@request_description",
|
||||
|
||||
"input": {
|
||||
"@input_variable1_name" : "@input_default1_value",
|
||||
"@input_variable2_name" : "@input_default2_value",
|
||||
"@input_variable..._name": "@input_default..._value",
|
||||
|
||||
"@input_variableA_name" : "<@input_variableA_type>",
|
||||
"@input_variableB_name" : "<@input_variableB_type>",
|
||||
"@input_variable..._name": "<@input_variable..._type>",
|
||||
},
|
||||
|
||||
"output": {
|
||||
"@output_variable1_name" : "<@output_variable1_type>",
|
||||
"@output_variable2_name" : "<@output_variable2_type>",
|
||||
"@output_variable..._name": "<@output_variable..._type>",
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -2,17 +2,25 @@
|
|||
"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":{
|
||||
"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.",
|
||||
|
||||
"input": { "path": "callLog/unserialize", "data": "array" },
|
||||
"output": { "ModuleError": "int", "data": "json" }
|
||||
}
|
||||
"input": [
|
||||
{"path": "callLog/unserialize"},
|
||||
{"data": "array"}
|
||||
],
|
||||
|
||||
"output": [
|
||||
{"ModuleError": "int"},
|
||||
{"data": "json"}
|
||||
]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
13
automate.php
13
automate.php
|
@ -7,6 +7,7 @@
|
|||
use \manager\ManagerError;
|
||||
use \manager\Repo;
|
||||
|
||||
use \api\client;
|
||||
|
||||
|
||||
|
||||
|
@ -65,7 +66,17 @@
|
|||
var_dump( $contact );
|
||||
}
|
||||
|
||||
parseCallLog();
|
||||
// parseCallLog();
|
||||
|
||||
debug();
|
||||
|
||||
|
||||
|
||||
$api = new client();
|
||||
var_dump( $api->send('parse-call-log', array(
|
||||
'@token'=> 'bb21158c733229347bd4e681891e213d94c685bf',
|
||||
'@username' => 'xdrm',
|
||||
'@password'=> 'mypassword'
|
||||
) ));
|
||||
|
||||
?>
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
"api" : "/api",
|
||||
|
||||
"st" : "/src/static",
|
||||
"dy" : "/src/dynamic",
|
||||
|
||||
|
|
Loading…
Reference in New Issue