Opti+revision 'api.js'
This commit is contained in:
parent
a5e80cf596
commit
94d91d479e
|
@ -1,3 +1,4 @@
|
||||||
function APIClass(b){this.target=b}
|
function APIClass(c){this.target=c}
|
||||||
APIClass.prototype={xhr:[],buffer:null,send:function(b,e,g){b.hasOwnProperty("path")||e({ModuleError:4});for(var a=0;a<this.xhr.length;a++)4==this.xhr[a].readyState&&(this.xhr=this.xhr.slice(0,a-1).concat(this.xhr.slice(a,this.xhr.length-1)));this.xhr.push(null);a=this.xhr.length-1;this.xhr[a]=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");console.log(b);var d=this;this.xhr[a].onreadystatechange=function(){if(4==d.xhr[a].readyState)if(d.buffer=d.xhr[a].responseText,
|
APIClass.prototype={xhr:[],buffer:null,optionalParams:[],send:function(c,f,g){c.hasOwnProperty("path")||f({ModuleError:4});for(var a=0;a<this.xhr.length;a++)4==this.xhr[a].readyState&&this.xhr.splice(a,1);this.xhr.push(null);a=this.xhr.length-1;this.optionalParams[a]=[];if(3<arguments.length)for(var d=3;d<arguments.length;d++)this.optionalParams[a].push(arguments[d]);this.xhr[a]=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");var e=this;this.xhr[a].onreadystatechange=
|
||||||
-1<[0,200].indexOf(d.xhr[a].status))try{e(JSON.parse(d.xhr[a].responseText))}catch(b){e({ModuleError:-1,ErrorDescription:"Erreur au niveau de api.js"}),console.warn(b)}else e({ModuleError:3})};var f=new FormData,c;for(c in b)"path"==c?f.append(c,b[c]):b[c]instanceof File?f.append(c,b[c]):f.append(c,JSON.stringify(b[c]));this.xhr[a].open("POST",this.target,!0);null!=g&&this.xhr[a].setRequestHeader("Authorization","Digest "+g);this.xhr[a].setRequestHeader("X-Requested-With","XMLHttpRequest");this.xhr[a].send(f)}};
|
function(){if(4==e.xhr[a].readyState)if(e.buffer=e.xhr[a].responseText,console.log("api request",c),-1<[0,200].indexOf(e.xhr[a].status))try{f(JSON.parse(e.xhr[a].responseText),e.optionalParams[a])}catch(b){f({ModuleError:-1,ErrorDescription:"Erreur au niveau de api.js"},e.optionalParams[a]),console.warn(b)}else f({ModuleError:3})};var d=new FormData,b;for(b in c)"path"==b?d.append(b,c[b]):c[b]instanceof File?d.append(b,c[b]):d.append(b,JSON.stringify(c[b]));this.xhr[a].open("POST",this.target,!0);
|
||||||
|
null!=g&&this.xhr[a].setRequestHeader("Authorization","Digest "+g);this.xhr[a].setRequestHeader("X-Requested-With","XMLHttpRequest");this.xhr[a].send(d)}};
|
||||||
|
|
|
@ -3,14 +3,15 @@ function APIClass(target){ this.target = target; }
|
||||||
|
|
||||||
APIClass.prototype = {
|
APIClass.prototype = {
|
||||||
xhr: [], // tableau d'objets pour les requêtes ajax
|
xhr: [], // tableau d'objets pour les requêtes ajax
|
||||||
|
buffer: null, // Contiendra le buffer pour debugger si erreur de parsage
|
||||||
buffer: null,
|
optionalParams: [], // Contiendra les paramètres que l'on veut passer au scope de @pHandler
|
||||||
|
|
||||||
/* transaction avec le serveur (http://host/api/)
|
/* transaction avec le serveur (http://host/api/)
|
||||||
*
|
*
|
||||||
* @param pRequest<Object> l'objet passé en POST (attribut->postfield) à http://host/api/
|
* @param pRequest<Object> l'objet passé en POST (attribut->postfield) à http://host/api/
|
||||||
* @param pHandler<Function> fonction qui s'éxécutera lors de la réponse (1 argument -> réponse<Object>)
|
* @param pHandler<Function> fonction qui s'éxécutera lors de la réponse (1 argument -> réponse<Object>)
|
||||||
* @param pToken<String> si donne, token d'auth pour l'api
|
* @param pToken<String> Optionnel, token d'auth pour l'api
|
||||||
|
* @param pParams<Mixed> Optionnels, liste d'arguments à passer au scope de @pHandler
|
||||||
*
|
*
|
||||||
* @return answer<Object> l'objet retourné par http://host/api/ via pHandler (1er argument)
|
* @return answer<Object> l'objet retourné par http://host/api/ via pHandler (1er argument)
|
||||||
*
|
*
|
||||||
|
@ -34,23 +35,29 @@ APIClass.prototype = {
|
||||||
pHandler({ModuleError:4});
|
pHandler({ModuleError:4});
|
||||||
|
|
||||||
// on efface les requêtes qui sont terminées (toutes celles de this.xhr)
|
// 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
|
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
|
// on créé une nouvelle entrée
|
||||||
this.xhr.push(null);
|
this.xhr.push(null);
|
||||||
i = this.xhr.length-1;
|
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
|
// création de l'objet AJAX
|
||||||
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
|
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
|
||||||
this.xhr[i] = new XMLHttpRequest();
|
this.xhr[i] = new XMLHttpRequest();
|
||||||
else // IE5, IE6
|
else // IE5, IE6
|
||||||
this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest');
|
this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest');
|
||||||
|
|
||||||
console.log(pRequest);
|
|
||||||
|
|
||||||
var ptrAPI = this;
|
var ptrAPI = this;
|
||||||
this.xhr[i].onreadystatechange = function(){
|
this.xhr[i].onreadystatechange = function(){
|
||||||
if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée
|
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('http://host/api/ => '+ptrAPI.xhr[i].responseText);
|
||||||
// console.log( JSON.parse(ptrAPI.xhr[i].responseText) );
|
// console.log( JSON.parse(ptrAPI.xhr[i].responseText) );
|
||||||
|
|
||||||
|
console.log('api request', pRequest);
|
||||||
|
|
||||||
/* si success de requête */
|
/* si success de requête */
|
||||||
if( [0,200].indexOf(ptrAPI.xhr[i].status) > -1 ){ // si fichier existe et reçu
|
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
|
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'}); console.warn(e); } // sinon on envoie obj.request = 'corrupted'
|
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' */
|
/* sinon retourne obj.request = 'unreachable' */
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue