upd: api.core.Request (Added URI_ARGUMENTS management (URL#) + Now can rename parameters) | upd: config.modules (Added 'rename' parameters option to rename before function call)
This commit is contained in:
parent
8fc2f7f614
commit
13f4aba25d
|
@ -20,7 +20,8 @@
|
|||
|
||||
// Attributs prives utiles (initialisation)
|
||||
private $path; // chemin de base (uri)
|
||||
private $params; // paramètres (POST+GET)
|
||||
private $raw_params; // paramètres reçus
|
||||
private $params; // paramètres donnés à la fonction
|
||||
private $schema; // schema configuration
|
||||
private $options; // options
|
||||
private $http_method; // methode HTTP appelante
|
||||
|
@ -87,7 +88,7 @@
|
|||
return $this->error->set(Err::WrongPathModule);
|
||||
|
||||
/* (2) Formattage @params en tableau */
|
||||
$params = (is_array($params)) ? $params : [];
|
||||
$this->raw_params = (is_array($params)) ? $params : [];
|
||||
|
||||
/* (3) On définit en constante la méthode HTTP */
|
||||
if( !isset($_SERVER['REQUEST_METHOD']) && !is_string($forced_method) )
|
||||
|
@ -110,7 +111,7 @@
|
|||
|
||||
/* (6) Verification des parametres (si @type est defini)
|
||||
---------------------------------------------------------*/
|
||||
if( !$this->checkParams($params) ) // Verification de tous les types
|
||||
if( !$this->checkParams() ) // Verification de tous les types
|
||||
return false; // checkParams() sets the error itself
|
||||
|
||||
|
||||
|
@ -121,7 +122,6 @@
|
|||
|
||||
/* (8) Construction de l'objet (add http method to params)
|
||||
---------------------------------------------------------*/
|
||||
$this->params = $params;
|
||||
$this->params['HTTP_METHOD'] = $this->http_method;
|
||||
$this->error->set(Err::Success);
|
||||
|
||||
|
@ -246,7 +246,22 @@
|
|||
return $this->error->set(Err::UnknownModule);
|
||||
|
||||
|
||||
/* (3) Verification de l'existence de la methode (conf)
|
||||
/* (3) Extract URI parameters
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Extract URI string after @path */
|
||||
$uri_end = substr($uri, $exists_size);
|
||||
|
||||
/* (2) If invalid format, return error */
|
||||
if( !preg_match('@^((?:\/[^\/]+)*)\/?$@', $uri_end, $uri_match) )
|
||||
return $this->error->set(Err::InvalidURI);
|
||||
|
||||
/* (3) Add each URI parameter to the parameter store */
|
||||
$uri_args = array_slice( explode('/', $uri_match[1]), 1);
|
||||
|
||||
foreach($uri_args as $index=>$value)
|
||||
$this->raw_params["URL$index"] = $value;
|
||||
|
||||
/* (4) Verification de l'existence de la methode (conf)
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Check if HTTP method is in allowed methods */
|
||||
if( !in_array($this->http_method, self::$allowed_http_methods) )
|
||||
|
@ -258,7 +273,7 @@
|
|||
|
||||
|
||||
|
||||
/* (4) Enregistrement du chemin et renvoi de SUCCESS
|
||||
/* (5) Enregistrement du chemin et renvoi de SUCCESS
|
||||
---------------------------------------------------------*/
|
||||
$this->path = [
|
||||
'path'=> $path,
|
||||
|
@ -319,18 +334,15 @@
|
|||
|
||||
/* (6) Verification du type des parametres envoyes
|
||||
*
|
||||
* @params<Array> Tableau associatif contenant les parametres
|
||||
* @params peut se voir rajouter les paramètres optionnels s'ils ne sont pas renseignés (initialisés à NULL)
|
||||
*
|
||||
* @return correct<bool> Retourne si oui ou non les parametres ont le bon type
|
||||
*
|
||||
---------------------------------------------------------*/
|
||||
private function checkParams(&$params){
|
||||
private function checkParams(){
|
||||
|
||||
/* (1) On verifie qu'il ne manque aucun parametre
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Si @params n'est pas un tableau */
|
||||
if( !is_array($params) )
|
||||
if( !is_array($this->raw_params) )
|
||||
return $this->error->set(Err::MissingParam);
|
||||
|
||||
/* (2) On récupère les données de la méthode */
|
||||
|
@ -343,7 +355,7 @@
|
|||
|
||||
/* (2) Si le type est defini, pour chaque param, on teste
|
||||
---------------------------------------------------------*/
|
||||
foreach($method['parameters'] as $name=>$paramsdata){
|
||||
foreach($method['parameters'] as $name=>$config){
|
||||
|
||||
/* (2.1) Vérification des données
|
||||
---------------------------------------------------------*/
|
||||
|
@ -351,43 +363,52 @@
|
|||
if( !is_string($name) )
|
||||
return $this->error->set(Err::ConfigError);
|
||||
|
||||
/* (2) Si @paramsdata n'est pas un tableau */
|
||||
if( !is_array($paramsdata) )
|
||||
/* (2) Si @config n'est pas un tableau */
|
||||
if( !is_array($config) )
|
||||
return $this->error->set(Err::ConfigError);
|
||||
|
||||
/* (3) So @paramsdata['type] manquant ou incorrect */
|
||||
if( !isset($paramsdata['type']) || !is_string($paramsdata['type']) )
|
||||
/* (3) So @config['type] manquant ou incorrect */
|
||||
if( !isset($config['type']) || !is_string($config['type']) )
|
||||
return $this->error->set(Err::ConfigError);
|
||||
|
||||
|
||||
/* (2.2) Gestion des spécifications
|
||||
---------------------------------------------------------*/
|
||||
/* (1) On récupère le paramètre RENAME */
|
||||
$rename = $name;
|
||||
if( isset($config['rename']) && is_string($config['rename']) && preg_match('@^\w+$@', $config['rename']) )
|
||||
$rename = $config['rename'];
|
||||
|
||||
/* (1) On récupère si le paramètre est optionnel ou pas */
|
||||
$optional = isset($paramsdata['optional']) && $paramsdata['optional'] === true;
|
||||
$optional = isset($config['optional']) && $config['optional'] === true;
|
||||
|
||||
/* (2) Si de type 'FILE' + fichier existe => on enregistre la ref. */
|
||||
if( $paramsdata['type'] == 'FILE' && isset($_FILES[$name]) )
|
||||
$params[$name] = &$_FILES[$name];
|
||||
if( $config['type'] == 'FILE' && isset($_FILES[$name]) )
|
||||
$this->params[$rename] = &$_FILES[$name];
|
||||
|
||||
/* (3) Si param obligatoire et manquant -> erreur */
|
||||
if( !isset($params[$name]) && !$optional )
|
||||
if( !isset($this->raw_params[$name]) && !$optional )
|
||||
return $this->error->set(Err::MissingParam, $name);
|
||||
|
||||
|
||||
/* (2.3) Gestion des valeurs
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Si le paramètre est optionnel et manquant */
|
||||
if( $optional && !isset($params[$name]) ){
|
||||
if( $optional && !isset($this->raw_params[$name]) ){
|
||||
|
||||
// On le crée le param optionnel avec la valeur NULL
|
||||
$params[$name] = null;
|
||||
$this->params[$rename] = null;
|
||||
|
||||
/* (2) Si le paramètre est renseigné (sauf FILE) */
|
||||
}elseif( $paramsdata['type'] != 'FILE'){
|
||||
}elseif( $config['type'] != 'FILE'){
|
||||
|
||||
// Si la verification est fausse, on retourne faux
|
||||
if( !Checker::run($paramsdata['type'], $params[$name]) )
|
||||
return $this->error->set(Err::WrongParam, $name, $paramsdata['type']);
|
||||
if( !Checker::run($config['type'], $this->raw_params[$name]) )
|
||||
return $this->error->set(Err::WrongParam, $name, $config['type']);
|
||||
|
||||
// Sinon, on ajoute aux params qu'on enverra à l'appel
|
||||
else
|
||||
$this->params[$rename] = $this->raw_params[$name];
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -12,10 +12,13 @@
|
|||
}
|
||||
},
|
||||
|
||||
"GET": {
|
||||
"PUT": {
|
||||
"description": "Gets an administrator's data",
|
||||
"permissions": [],
|
||||
"parameters": {}
|
||||
"parameters": {
|
||||
"URL0": { "description": "Some string token", "type": "text", "rename": "id_article" },
|
||||
"postdata": { "description": "Some string token", "type": "text" }
|
||||
}
|
||||
},
|
||||
|
||||
"DELETE": {
|
||||
|
@ -24,7 +27,7 @@
|
|||
"parameters": {}
|
||||
},
|
||||
|
||||
"PUT": {
|
||||
"GET": {
|
||||
"description": "Deletes an administrator",
|
||||
"permissions": [["admin"]],
|
||||
"parameters": {}
|
||||
|
|
Loading…
Reference in New Issue