defaults.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. 'use strict';
  2. var utils = require('./utils');
  3. var normalizeHeaderName = require('./helpers/normalizeHeaderName');
  4. var DEFAULT_CONTENT_TYPE = {
  5. 'Content-Type': 'application/x-www-form-urlencoded'
  6. };
  7. function setContentTypeIfUnset(headers, value) {
  8. if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
  9. headers['Content-Type'] = value;
  10. }
  11. }
  12. function getDefaultAdapter() {
  13. var adapter;
  14. if (typeof XMLHttpRequest !== 'undefined') {
  15. // For browsers use XHR adapter
  16. adapter = require('./adapters/xhr');
  17. } else if (typeof process !== 'undefined') {
  18. // For node use HTTP adapter
  19. adapter = require('./adapters/http');
  20. }
  21. return adapter;
  22. }
  23. var defaults = {
  24. adapter: getDefaultAdapter(),
  25. transformRequest: [function transformRequest(data, headers) {
  26. normalizeHeaderName(headers, 'Content-Type');
  27. if (utils.isFormData(data) ||
  28. utils.isArrayBuffer(data) ||
  29. utils.isBuffer(data) ||
  30. utils.isStream(data) ||
  31. utils.isFile(data) ||
  32. utils.isBlob(data)
  33. ) {
  34. return data;
  35. }
  36. if (utils.isArrayBufferView(data)) {
  37. return data.buffer;
  38. }
  39. if (utils.isURLSearchParams(data)) {
  40. setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
  41. return data.toString();
  42. }
  43. if (utils.isObject(data)) {
  44. setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
  45. return JSON.stringify(data);
  46. }
  47. return data;
  48. }],
  49. transformResponse: [function transformResponse(data) {
  50. /*eslint no-param-reassign:0*/
  51. if (typeof data === 'string') {
  52. try {
  53. data = JSON.parse(data);
  54. } catch (e) { /* Ignore */ }
  55. }
  56. return data;
  57. }],
  58. /**
  59. * A timeout in milliseconds to abort a request. If set to 0 (default) a
  60. * timeout is not created.
  61. */
  62. timeout: 0,
  63. xsrfCookieName: 'XSRF-TOKEN',
  64. xsrfHeaderName: 'X-XSRF-TOKEN',
  65. maxContentLength: -1,
  66. validateStatus: function validateStatus(status) {
  67. return status >= 200 && status < 300;
  68. }
  69. };
  70. defaults.headers = {
  71. common: {
  72. 'Accept': 'application/json, text/plain, */*'
  73. }
  74. };
  75. utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
  76. defaults.headers[method] = {};
  77. });
  78. utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
  79. defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
  80. });
  81. module.exports = defaults;