@trapcode/codebase
Version:
For TrapCode
139 lines (126 loc) • 5.01 kB
JavaScript
import StringHelper from "./string";
export default class JqueryHttpHelper extends StringHelper {
// ------------- START HTTP SECTION -----------------
getFrom(url, data = {}, jobs = {}) {
return this.sendVia('GET', url, data, jobs);
}
postTo(url, data = {}, jobs = {}) {
return this.sendVia('POST', url, data, jobs);
}
deleteFrom(url, data = {}, jobs = {}) {
return this.sendVia('DELETE', url, data, jobs);
}
putIn(url, data = {}, jobs = {}) {
return this.sendVia('PUT', url, data, jobs);
}
getFromRoute(route, data = {}, jobs = {}) {
return this.getFrom(this.route(route), data, jobs);
}
postToRoute(route, data = {}, jobs = {}) {
return this.postTo(this.route(route), data, jobs);
}
deleteFromRoute(route, data = {}, jobs = {}) {
return this.deleteFrom(this.route(route), data, jobs);
}
putInRoute(route, data = {}, jobs = {}) {
return this.putIn(this.route(route), data, jobs);
}
sendVia(method, url, data = {}, jobs = {}) {
let $r, vm;
vm = this;
$r = null;
method = method.toUpperCase();
if (data instanceof FormData) {
$r = $.ajax({
xhr: function () {
var xhr;
xhr = new window.XMLHttpRequest();
if (jobs.hasOwnProperty('onUploadProgress')) {
xhr.upload.addEventListener('progress', function ($e) {
var percentComplete;
if ($e.lengthComputable) {
percentComplete = $e.loaded / $e.total;
percentComplete = percentComplete * 100;
return jobs.onUploadProgress(Math.floor(percentComplete));
} else {
return jobs.onUploadProgress(0);
}
}, false);
}
return xhr;
},
url: url,
type: method,
data: data,
processData: false,
contentType: false
});
} else {
if (method === 'POST') {
$r = $.post(url, data);
} else if (method === 'GET') {
$r = $.get(url, data);
} else {
$r = $.ajax({
url: url,
type: method,
data: data
});
}
}
$r.done(function (api, status, request) {
if (typeof api === "object" && api.hasOwnProperty('proceed') && api['proceed'] === true) {
if (api.hasOwnProperty('_token')) {
vm.s().setData('_token', api['_token']);
}
if (jobs.hasOwnProperty('yes')) {
jobs.yes(api['data'], status, request);
}
if (typeof vm['notifyAndProceedTo'] === 'function' && !jobs.hasOwnProperty('silent')) {
vm.notifyAndProceedTo(api, 'success');
}
} else {
if (jobs.hasOwnProperty('no')) {
jobs.no(api, status, request);
}
if (jobs.hasOwnProperty('noOrError')) {
jobs.noOrError(api, status, request);
}
if (typeof vm['notifyAndProceedTo'] === 'function' && !jobs.hasOwnProperty('silent')) {
vm.notifyAndProceedTo(api, 'error');
}
}
if (jobs.hasOwnProperty('yesOrNo')) {
jobs.yesOrNo(api, status, request);
}
if (jobs.hasOwnProperty('any')) {
jobs.any(api, status, request);
}
}).fail(function (api, status, request) {
var error, r;
r = api['responseJSON'];
if (typeof vm['notifyError'] === 'function') {
if (r !== void 0) {
if (r.hasOwnProperty('errors') && Object.keys(r['errors']).length > 0) {
error = vm.laraErrorsToText(r['errors']);
} else if (r.hasOwnProperty('message') && r['message'].length > 0) {
error = r['message'];
}
} else {
error = 'Connection failed, please try again!';
}
vm.notifyError(error);
}
if (jobs.hasOwnProperty('noOrError')) {
jobs.noOrError(api, status, request);
}
if (jobs.hasOwnProperty('error')) {
jobs.error(api, status, request);
}
if (jobs.hasOwnProperty('any')) {
jobs.any(api, status, request);
}
});
}
};
// ------------- END HTTP SECTION -----------------