Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /**
  2. * Created by robin on 10/24/15.
  3. */
  4. (function () {
  5. 'use strict';
  6. angular.module('luticate2Utils')
  7. .factory('luRequest', ['$q', '$http', 'luBusyBusiness', function ($q, $http, luBusyBusiness) {
  8. var luRequest = {};
  9. luRequest.hooks = {
  10. before: [],
  11. resolve: [],
  12. reject: []
  13. };
  14. luRequest.addHook = function(type, callback)
  15. {
  16. if (luRequest.hooks.hasOwnProperty(type)) {
  17. luRequest.hooks[type].push(callback);
  18. }
  19. };
  20. luRequest.get = function(url, dataGet, luBusyGroups)
  21. {
  22. return luRequest.request(url, 'GET', dataGet, null, luBusyGroups);
  23. };
  24. luRequest.post = function(url, dataGet, dataPost, luBusyGroups)
  25. {
  26. return luRequest.request(url, 'POST', dataGet, dataPost, luBusyGroups);
  27. };
  28. luRequest.put = function(url, dataGet, dataPost, luBusyGroups)
  29. {
  30. return luRequest.request(url, 'PUT', dataGet, dataPost, luBusyGroups);
  31. };
  32. luRequest.delete = function(url, dataGet, dataPost, luBusyGroups)
  33. {
  34. return luRequest.request(url, 'DELETE', dataGet, dataPost, luBusyGroups);
  35. };
  36. function reject(url, method, dataGet, dataPost, luBusyGroups, deferred, data, status)
  37. {
  38. var error = {
  39. data: data,
  40. status: status
  41. };
  42. for (var i = 0; i < luRequest.hooks.reject.length; ++i) {
  43. luRequest.hooks.reject[i](url, method, dataGet, dataPost, luBusyGroups, error);
  44. }
  45. deferred.reject(error);
  46. if (luBusyGroups != null) {
  47. luBusyBusiness.reject(luBusyGroups, error);
  48. }
  49. }
  50. function resolve(url, method, dataGet, dataPost, luBusyGroups, deferred, data)
  51. {
  52. for (var i = 0; i < luRequest.hooks.resolve.length; ++i) {
  53. luRequest.hooks.resolve[i](url, method, dataGet, dataPost, luBusyGroups, data);
  54. }
  55. deferred.resolve(data.data);
  56. if (luBusyGroups != null) {
  57. luBusyBusiness.resolve(luBusyGroups);
  58. }
  59. }
  60. luRequest.request = function(url, method, dataGet, dataPost, luBusyGroups)
  61. {
  62. if (luBusyGroups != null) {
  63. luBusyBusiness.initGroups(luBusyGroups);
  64. }
  65. var deferred = $q.defer();
  66. url = url.replace(/\/+$/, '');
  67. var params = {
  68. url: url,
  69. method: method,
  70. params: dataGet,
  71. data: JSON.stringify(dataPost),
  72. headers: {
  73. 'Content-Type': "application/json"
  74. }
  75. };
  76. for (var i = 0; i < luRequest.hooks.before.length; ++i) {
  77. luRequest.hooks.before[i](url, method, dataGet, dataPost, luBusyGroups);
  78. }
  79. $http(params)
  80. .then(function (response) {
  81. var result = response.data;
  82. var status = response.status;
  83. if (result == null || typeof result !== 'object') {
  84. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, {
  85. message: "Failed to parse response",
  86. code: status,
  87. version: null,
  88. data: null
  89. }, status);
  90. }
  91. else if (result.message != null) {
  92. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, result, status);
  93. }
  94. else {
  95. resolve(url, method, dataGet, dataPost, luBusyGroups, deferred, result);
  96. }
  97. }, function (response) {
  98. var result = response.data;
  99. var status = response.status;
  100. if (result == null || typeof result !== 'object') {
  101. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, {
  102. message: "Failed to parse response",
  103. code: status,
  104. version: null,
  105. data: null
  106. }, status);
  107. }
  108. else {
  109. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, result, status);
  110. }
  111. });
  112. return deferred.promise;
  113. };
  114. return luRequest;
  115. }]);
  116. })();