123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /**
- * Created by robin on 10/24/15.
- */
-
- (function () {
- 'use strict';
- angular.module('luticate2Utils')
- .factory('luRequest', ['$q', '$http', 'luBusyBusiness', function ($q, $http, luBusyBusiness) {
-
- var luRequest = {};
-
- luRequest.hooks = {
- before: [],
- resolve: [],
- reject: []
- };
-
- luRequest.addHook = function(type, callback)
- {
- if (luRequest.hooks.hasOwnProperty(type)) {
- luRequest.hooks[type].push(callback);
- }
- };
-
- luRequest.get = function(url, dataGet, luBusyGroups)
- {
- return luRequest.request(url, 'GET', dataGet, null, luBusyGroups);
- };
-
- luRequest.post = function(url, dataGet, dataPost, luBusyGroups)
- {
- return luRequest.request(url, 'POST', dataGet, dataPost, luBusyGroups);
- };
-
- luRequest.put = function(url, dataGet, dataPost, luBusyGroups)
- {
- return luRequest.request(url, 'PUT', dataGet, dataPost, luBusyGroups);
- };
-
- luRequest.delete = function(url, dataGet, dataPost, luBusyGroups)
- {
- return luRequest.request(url, 'DELETE', dataGet, dataPost, luBusyGroups);
- };
-
- function reject(url, method, dataGet, dataPost, luBusyGroups, deferred, data, status)
- {
- var error = {
- data: data,
- status: status
- };
- for (var i = 0; i < luRequest.hooks.reject.length; ++i) {
- luRequest.hooks.reject[i](url, method, dataGet, dataPost, luBusyGroups, error);
- }
- deferred.reject(error);
- if (luBusyGroups != null) {
- luBusyBusiness.reject(luBusyGroups, error);
- }
- }
-
- function resolve(url, method, dataGet, dataPost, luBusyGroups, deferred, data)
- {
- for (var i = 0; i < luRequest.hooks.resolve.length; ++i) {
- luRequest.hooks.resolve[i](url, method, dataGet, dataPost, luBusyGroups, data);
- }
- deferred.resolve(data.data);
- if (luBusyGroups != null) {
- luBusyBusiness.resolve(luBusyGroups);
- }
- }
-
- luRequest.request = function(url, method, dataGet, dataPost, luBusyGroups)
- {
- if (luBusyGroups != null) {
- luBusyBusiness.initGroups(luBusyGroups);
- }
-
- var deferred = $q.defer();
-
- url = url.replace(/\/+$/, '');
-
- var params = {
- url: url,
- method: method,
- params: dataGet,
- data: JSON.stringify(dataPost),
- headers: {
- 'Content-Type': "application/json"
- }
- };
-
- for (var i = 0; i < luRequest.hooks.before.length; ++i) {
- luRequest.hooks.before[i](url, method, dataGet, dataPost, luBusyGroups);
- }
-
- $http(params)
- .then(function (response) {
- var result = response.data;
- var status = response.status;
- if (result == null || typeof result !== 'object') {
- reject(url, method, dataGet, dataPost, luBusyGroups, deferred, {
- message: "Failed to parse response",
- code: status,
- version: null,
- data: null
- }, status);
- }
- else if (result.message != null) {
- reject(url, method, dataGet, dataPost, luBusyGroups, deferred, result, status);
- }
- else {
- resolve(url, method, dataGet, dataPost, luBusyGroups, deferred, result);
- }
- }, function (response) {
- var result = response.data;
- var status = response.status;
- if (result == null || typeof result !== 'object') {
- reject(url, method, dataGet, dataPost, luBusyGroups, deferred, {
- message: "Failed to parse response",
- code: status,
- version: null,
- data: null
- }, status);
- }
- else {
- reject(url, method, dataGet, dataPost, luBusyGroups, deferred, result, status);
- }
- });
- return deferred.promise;
- };
-
- return luRequest;
- }]);
- })();
|