You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					88 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					88 lines
				
				2.1 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | var utils = require('./../utils'); | ||
|  | var transformData = require('./transformData'); | ||
|  | var isCancel = require('../cancel/isCancel'); | ||
|  | var defaults = require('../defaults'); | ||
|  | var CanceledError = require('../cancel/CanceledError'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * Throws a `CanceledError` if cancellation has been requested. | ||
|  |  */ | ||
|  | function throwIfCancellationRequested(config) { | ||
|  |   if (config.cancelToken) { | ||
|  |     config.cancelToken.throwIfRequested(); | ||
|  |   } | ||
|  | 
 | ||
|  |   if (config.signal && config.signal.aborted) { | ||
|  |     throw new CanceledError(); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Dispatch a request to the server using the configured adapter. | ||
|  |  * | ||
|  |  * @param {object} config The config that is to be used for the request | ||
|  |  * @returns {Promise} The Promise to be fulfilled | ||
|  |  */ | ||
|  | module.exports = function dispatchRequest(config) { | ||
|  |   throwIfCancellationRequested(config); | ||
|  | 
 | ||
|  |   // Ensure headers exist
 | ||
|  |   config.headers = config.headers || {}; | ||
|  | 
 | ||
|  |   // Transform request data
 | ||
|  |   config.data = transformData.call( | ||
|  |     config, | ||
|  |     config.data, | ||
|  |     config.headers, | ||
|  |     config.transformRequest | ||
|  |   ); | ||
|  | 
 | ||
|  |   // Flatten headers
 | ||
|  |   config.headers = utils.merge( | ||
|  |     config.headers.common || {}, | ||
|  |     config.headers[config.method] || {}, | ||
|  |     config.headers | ||
|  |   ); | ||
|  | 
 | ||
|  |   utils.forEach( | ||
|  |     ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], | ||
|  |     function cleanHeaderConfig(method) { | ||
|  |       delete config.headers[method]; | ||
|  |     } | ||
|  |   ); | ||
|  | 
 | ||
|  |   var adapter = config.adapter || defaults.adapter; | ||
|  | 
 | ||
|  |   return adapter(config).then(function onAdapterResolution(response) { | ||
|  |     throwIfCancellationRequested(config); | ||
|  | 
 | ||
|  |     // Transform response data
 | ||
|  |     response.data = transformData.call( | ||
|  |       config, | ||
|  |       response.data, | ||
|  |       response.headers, | ||
|  |       config.transformResponse | ||
|  |     ); | ||
|  | 
 | ||
|  |     return response; | ||
|  |   }, function onAdapterRejection(reason) { | ||
|  |     if (!isCancel(reason)) { | ||
|  |       throwIfCancellationRequested(config); | ||
|  | 
 | ||
|  |       // Transform response data
 | ||
|  |       if (reason && reason.response) { | ||
|  |         reason.response.data = transformData.call( | ||
|  |           config, | ||
|  |           reason.response.data, | ||
|  |           reason.response.headers, | ||
|  |           config.transformResponse | ||
|  |         ); | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     return Promise.reject(reason); | ||
|  |   }); | ||
|  | }; |