UNPKG

@trapcode/codebase

Version:

For TrapCode

139 lines (126 loc) 5.01 kB
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 -----------------