defaults.js 2.6 KB

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