"use strict";
/**
* @module _methodsAtom
*
*/
var FAM = "LOADER_METHOD"
/**
* @function _methodsAtom:load
* @description atom ( non assertive version of load ) basic load function that returns a Promise
* taken from http://www.html5rocks.com/en/tutorials/es6/promises/ <br>
*
* @param {string} method
* @param {string} url
* @param {object} xmit (optional)
* @description: allows adding an Xmit instance for setting up events that
* way in addition to the Promise that is returned
* @returns {object} Promise
*/
function load(method, url, xmit) {
xmit = (xmit && xmit.FAMILY === "XMIT") ? xmit : false;
return new Promise(
function(resolve, reject) {
var rq = new XMLHttpRequest();
rq.open(method, url);
rq.onload = function() {
if (rq.status === 200) {
if (xmit!==false) xmit.xmit(83400, rq.response);
resolve(rq.response);
} else {
if (xmit!==false) xmit.xmit(834402, rq.statusText)
reject(Error(rq.statusText));
}
}
rq.onerror = function() {
if (xmit!==false) xmit.xmit(834402, rq.statusText)
reject(Error("network error"));
}
rq.send();
}
);
}
load.prototype.FAMILY = FAM;
/**
* @function _methodsAtom:get
* @description calls load with GET as method
* @param {string} url
* @returns {object} Promise
*/
function get(url) {
return load("GET", url);
}
/**
* @function _methodsAtom:post
* @description calls load with POST as method
* @param {string} url
* @returns {object} Promise
*/
function post(url) {
return load("POST", url);
}
load.prototype.FAMILY =
get.prototype.FAMILY =
post.prototype.FAMILY = FAM
module.exports = {
load:load,
get:get,
post:post
}