From 94d91d479e124a7bc32ffe7cbe369be7ac626fe4 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 23 May 2016 11:09:52 +0200 Subject: [PATCH] Opti+revision 'api.js' --- js/lib/api-min.js | 7 ++++--- js/lib/api.js | 29 +++++++++++++++++++---------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/js/lib/api-min.js b/js/lib/api-min.js index e6d4e7a..86eeb6d 100644 --- a/js/lib/api-min.js +++ b/js/lib/api-min.js @@ -1,3 +1,4 @@ -function APIClass(b){this.target=b} -APIClass.prototype={xhr:[],buffer:null,send:function(b,e,g){b.hasOwnProperty("path")||e({ModuleError:4});for(var a=0;a l'objet passé en POST (attribut->postfield) à http://host/api/ * @param pHandler fonction qui s'éxécutera lors de la réponse (1 argument -> réponse) - * @param pToken si donne, token d'auth pour l'api + * @param pToken Optionnel, token d'auth pour l'api + * @param pParams Optionnels, liste d'arguments à passer au scope de @pHandler * * @return answer l'objet retourné par http://host/api/ via pHandler (1er argument) * @@ -34,23 +35,29 @@ APIClass.prototype = { pHandler({ModuleError:4}); // on efface les requêtes qui sont terminées (toutes celles de this.xhr) - for( var i = 0 ; i < this.xhr.length ; i++ ){ + for( var i = 0 ; i < this.xhr.length ; i++ ) if( this.xhr[i].readyState == 4 ) // si terminée - this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée - } + this.xhr.splice(i, 1); + // on créé une nouvelle entrée this.xhr.push(null); i = this.xhr.length-1; + + // Gestion des paramètres optionnels à passer au scope de @pHandler + this.optionalParams[i] = []; + if( arguments.length > 3 ) + for( var arg = 3 ; arg < arguments.length ; arg++ ) + this.optionalParams[i].push( arguments[arg] ); + + // création de l'objet AJAX if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari this.xhr[i] = new XMLHttpRequest(); else // IE5, IE6 this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest'); - console.log(pRequest); - var ptrAPI = this; this.xhr[i].onreadystatechange = function(){ if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée @@ -60,10 +67,12 @@ APIClass.prototype = { // console.log('http://host/api/ => '+ptrAPI.xhr[i].responseText); // console.log( JSON.parse(ptrAPI.xhr[i].responseText) ); + console.log('api request', pRequest); + /* si success de requête */ if( [0,200].indexOf(ptrAPI.xhr[i].status) > -1 ){ // si fichier existe et reçu - try{ pHandler( JSON.parse(ptrAPI.xhr[i].responseText) ); } // si on peut parser, on envoie - catch(e){ pHandler({ModuleError:-1, ErrorDescription:'Erreur au niveau de api.js'}); console.warn(e); } // sinon on envoie obj.request = 'corrupted' + try{ pHandler( JSON.parse(ptrAPI.xhr[i].responseText), ptrAPI.optionalParams[i]); } // si on peut parser, on envoie + catch(e){ pHandler({ModuleError:-1, ErrorDescription:'Erreur au niveau de api.js'}, ptrAPI.optionalParams[i]); console.warn(e); } // sinon on envoie obj.request = 'corrupted' } /* sinon retourne obj.request = 'unreachable' */ else