Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export var Api = {
- initializationStarted: false,
- pendingRequests: 0,
- prepareInitialization() {
- Api.initializationStarted = false;
- Api.pendingRequests = 0;
- },
- initializationCompleted() {
- return Api.initializationStarted && Api.pendingRequests === 0;
- },
- post(context, path, data, onSuccess, onError, options) {
- Api.request(context, path, data, 'POST', onSuccess, onError, options);
- },
- get(context, path, onSuccess, onError, options) {
- Api.request(context, path, {}, 'GET', onSuccess, onError, options);
- },
- async syncGet(context, path, onSuccess, onError) {
- Api.pendingRequests = Api.pendingRequests + 1;
- Api.initializationStarted = true;
- const url = process.env.VUE_APP_API_URL + path;
- await context.$http.get(url).then(response => {
- context.errorResponse = undefined;
- context.submitSuccess = true;
- window.console.debug('Request success');
- Api.pendingRequests = Api.pendingRequests - 1;
- if (typeof onSuccess === 'function') {
- onSuccess(response.body);
- }
- }, errorResponse => {
- context.errorResponse = errorResponse.body;
- context.submitSuccess = false;
- window.console.error('Request failed: ' + errorResponse.body.message);
- Api.pendingRequests = Api.pendingRequests - 1;
- if (typeof onError === 'function') {
- onError(errorResponse.body);
- }
- });
- },
- getWithParam(context, path, data, onSuccess, onError, options) {
- Api.request(context, path, data, 'GET', onSuccess, onError, options);
- },
- put(context, path, data, onSuccess, onError, options) {
- Api.request(context, path, data, 'PUT', onSuccess, onError, options);
- },
- delete(context, path, data, onSuccess, onError, options) {
- Api.request(context, path, data, 'DELETE', onSuccess, onError, options);
- },
- postMultipart(context, path, file, data, onSuccess, onError, options) {
- options = options ? options : {};
- options.headers = options.headers ? options.headers : {};
- options.headers['Content-Type'] = 'multipart/form-data';
- let formData = new FormData();
- formData.set('file', file);
- for (const [key, value] of Object.entries(data)) {
- formData.set(key, value);
- }
- Api.post(context, path, formData, onSuccess, onError, options);
- },
- request(context, path, data, method, onSuccess, onError, options) {
- Api.pendingRequests = Api.pendingRequests + 1;
- Api.initializationStarted = true;
- const url = process.env.VUE_APP_API_URL + path;
- window.console.debug('Sending response to: ' + url);
- window.console.debug('Body: ' + JSON.stringify(data));
- const successHandler = response => {
- context.errorResponse = undefined;
- context.submitSuccess = true;
- window.console.debug('Request success');
- Api.pendingRequests = Api.pendingRequests - 1;
- if (typeof onSuccess === 'function') {
- onSuccess(response.body);
- }
- };
- const errorHandler = errorResponse => {
- context.errorResponse = errorResponse.body;
- context.submitSuccess = false;
- window.console.error('Request failed: ' + errorResponse.body.message);
- Api.pendingRequests = Api.pendingRequests - 1;
- if (typeof onError === 'function') {
- onError(errorResponse.body);
- }
- };
- if (method === 'POST') {
- context.$http.post(url, data, options).then(successHandler, errorHandler);
- } else if (method === 'GET') {
- context.$http.get(url, {params: data}, options).then(successHandler, errorHandler);
- } else if (method === 'DELETE') {
- context.$http.delete(url, {params: data}, options).then(successHandler, errorHandler);
- } else if (method === 'PUT') {
- context.$http.put(url, data, options).then(successHandler, errorHandler);
- }
- },
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement