66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
/**
|
|
* @name _http
|
|
* @description Generic API Client using XMLHttpRequest
|
|
* @param {string} url The URI/URL to connect to
|
|
* @param {string} method The HTTP method to invoke- GET, POST, etc
|
|
* @param {function} callback Once the HTTP request has completed, responseText is passed into this function for execution
|
|
* @param {object} params Query Parameters in a JavaScript Object (Optional)
|
|
*
|
|
*/
|
|
function _http(url, method, callback, params) {
|
|
var xhr,
|
|
reqUrl;
|
|
|
|
xhr = new XMLHttpRequest();
|
|
xhr.onreadystatechange = function xhrProc() {
|
|
if (xhr.readyState == 4 && xhr.status == 200) {
|
|
callback(xhr.responseText);
|
|
}
|
|
};
|
|
|
|
|
|
/** If Query Parameters are present, handle them... */
|
|
if (typeof params === 'undefined') {
|
|
reqUrl = url;
|
|
} else {
|
|
switch (method) {
|
|
case 'GET':
|
|
reqUrl = url + procQueryParams(params);
|
|
break;
|
|
case 'POST':
|
|
reqUrl = url;
|
|
break;
|
|
default:
|
|
}
|
|
}
|
|
|
|
|
|
/** Send the HTTP Request */
|
|
if (reqUrl) {
|
|
xhr.open(method, reqUrl, true);
|
|
xhr.setRequestHeader("Accept", "application/json");
|
|
|
|
if (method === 'POST') {
|
|
xhr.send(params);
|
|
} else {
|
|
xhr.send();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* @name procQueryParams
|
|
* @description Return function that converts Query Parameters from a JavaScript Object to a proper URL encoded string
|
|
* @param {object} params Query Parameters in a JavaScript Object
|
|
*
|
|
*/
|
|
function procQueryParams(params) {
|
|
return "?" + Object
|
|
.keys(params)
|
|
.map(function (key) {
|
|
return key + "=" + encodeURIComponent(params[key])
|
|
})
|
|
.join("&")
|
|
}
|
|
}
|