Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

lu-request.js 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. headers: {}
  72. };
  73. if (dataPost != null && dataPost.constructor === FormData) {
  74. params.data = dataPost;
  75. params.headers['Content-Type'] = undefined;
  76. }
  77. else {
  78. params.data = JSON.stringify(dataPost);
  79. params.headers['Content-Type'] = 'application/json';
  80. }
  81. for (var i = 0; i < luRequest.hooks.before.length; ++i) {
  82. luRequest.hooks.before[i](url, method, dataGet, dataPost, luBusyGroups);
  83. }
  84. $http(params)
  85. .then(function (response) {
  86. var result = response.data;
  87. var status = response.status;
  88. if (result == null || typeof result !== 'object') {
  89. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, {
  90. message: "Failed to parse response",
  91. code: status,
  92. version: null,
  93. data: null
  94. }, status);
  95. }
  96. else if (result.message != null) {
  97. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, result, status);
  98. }
  99. else {
  100. resolve(url, method, dataGet, dataPost, luBusyGroups, deferred, result);
  101. }
  102. }, function (response) {
  103. var result = response.data;
  104. var status = response.status;
  105. if (result == null || typeof result !== 'object') {
  106. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, {
  107. message: "Failed to parse response",
  108. code: status,
  109. version: null,
  110. data: null
  111. }, status);
  112. }
  113. else {
  114. reject(url, method, dataGet, dataPost, luBusyGroups, deferred, result, status);
  115. }
  116. });
  117. return deferred.promise;
  118. };
  119. return luRequest;
  120. }]);
  121. })();