* @ngdoc function * @name ng.$http * @requires $httpBackend * @requires $browser * @requires $cacheFactory * @requires $rootScope * @requires $q * @requires $injector * * @description * The `$http` service is a core Angular service that facilitates c
(config)
| 8918 | </example> |
| 8919 | */ |
| 8920 | function $http(config) { |
| 8921 | config.method = uppercase(config.method); |
| 8922 | |
| 8923 | var reqTransformFn = config.transformRequest || $config.transformRequest, |
| 8924 | respTransformFn = config.transformResponse || $config.transformResponse, |
| 8925 | defHeaders = $config.headers, |
| 8926 | reqHeaders = extend({'X-XSRF-TOKEN': $browser.cookies()['XSRF-TOKEN']}, |
| 8927 | defHeaders.common, defHeaders[lowercase(config.method)], config.headers), |
| 8928 | reqData = transformData(config.data, headersGetter(reqHeaders), reqTransformFn), |
| 8929 | promise; |
| 8930 | |
| 8931 | // strip content-type if data is undefined |
| 8932 | if (isUndefined(config.data)) { |
| 8933 | delete reqHeaders['Content-Type']; |
| 8934 | } |
| 8935 | |
| 8936 | // send request |
| 8937 | promise = sendReq(config, reqData, reqHeaders); |
| 8938 | |
| 8939 | |
| 8940 | // transform future response |
| 8941 | promise = promise.then(transformResponse, transformResponse); |
| 8942 | |
| 8943 | // apply interceptors |
| 8944 | forEach(responseInterceptors, function(interceptor) { |
| 8945 | promise = interceptor(promise); |
| 8946 | }); |
| 8947 | |
| 8948 | promise.success = function(fn) { |
| 8949 | promise.then(function(response) { |
| 8950 | fn(response.data, response.status, response.headers, config); |
| 8951 | }); |
| 8952 | return promise; |
| 8953 | }; |
| 8954 | |
| 8955 | promise.error = function(fn) { |
| 8956 | promise.then(null, function(response) { |
| 8957 | fn(response.data, response.status, response.headers, config); |
| 8958 | }); |
| 8959 | return promise; |
| 8960 | }; |
| 8961 | |
| 8962 | return promise; |
| 8963 | |
| 8964 | function transformResponse(response) { |
| 8965 | // make a copy since the response must be cacheable |
| 8966 | var resp = extend({}, response, { |
| 8967 | data: transformData(response.data, response.headers, respTransformFn) |
| 8968 | }); |
| 8969 | return (isSuccess(response.status)) |
| 8970 | ? resp |
| 8971 | : $q.reject(resp); |
| 8972 | } |
| 8973 | } |
| 8974 | |
| 8975 | $http.pendingRequests = []; |
| 8976 |
no test coverage detected