ComunicWeb/assets/js/common/api.js

70 lines
1.9 KiB
JavaScript
Raw Normal View History

2017-01-04 18:14:27 +00:00
/**
* API main functions
*
* @author Pierre HUBERT
*/
/**
* Make an API request
*
* @param {String} apiURI The URI to call in the API
* @param {Object} params The params to include in request
2017-01-29 14:49:21 +00:00
* @param {Boolean} requireLoginTokens Specify if login tokens are required or not
2017-01-04 18:14:27 +00:00
* @param {Function} nextAction What to do next
*/
2017-01-29 14:49:21 +00:00
ComunicWeb.common.api.makeAPIrequest = function(apiURI, params, requireLoginTokens, nextAction){
2017-01-04 18:14:27 +00:00
//Prepare the request URL
var requestURL = ComunicWeb.__config.apiURL + apiURI;
2017-01-04 18:14:27 +00:00
2017-01-29 14:49:21 +00:00
//Add login tokens to params if required
if(requireLoginTokens){
//Get login tokens
tokens = ComunicWeb.user.loginTokens.getLoginTokens();
//Add tokens
params.token1 = tokens.token1;
params.token2 = tokens.token2;
}
2017-01-04 18:14:27 +00:00
//Prepare data to send in request
var count = 0;
var datas = "";
for(paramName in params){
//We add a "&" if it isn't the first param
if(count != 0)
datas += "&";
//We add field value
datas += encodeURIComponent(paramName) + "=" + encodeURIComponent(params[paramName]);
count++; //Increment counter
2017-01-29 14:49:21 +00:00
}
2017-01-04 18:14:27 +00:00
//Create request
var apiXHR = new XMLHttpRequest();
apiXHR.open("POST", requestURL);
//Prepare request response
apiXHR.onreadystatechange = function(){
//We continue only if request is terminated
if(apiXHR.readyState == 4){
//Prepare result
2017-01-29 14:49:21 +00:00
var result = JSON.parse(apiXHR.responseText);
//We check if we got any error
if(result.error){
//Log error
ComunicWeb.debug.logMessage("Got an error in a XHR request! " + result.toString());
}
2017-01-04 18:14:27 +00:00
//We can do the next step
2017-01-29 14:49:21 +00:00
nextAction(result);
2017-01-04 18:14:27 +00:00
}
}
//Set request headers
apiXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//Submit request
apiXHR.send(datas);
2017-01-04 18:14:27 +00:00
};