UNPKG

4.22 kBJavaScriptView Raw
1var encodeQueryString = require('x-query-string/encode');
2var constants = require('../shared/constants');
3var template = require('./template');
4var uuid = require('./uuid');
5var HTTP_REQUEST = constants.HTTP_REQUEST;
6
7/**
8 * Create a new default request options.
9 *
10 * @returns {RequestOptions} Returns a new default request opitons.
11 */
12function createDefaultOptions() {
13 /*eslint no-unused-vars: ["error", { "args": "none" }]*/
14 /**
15 * @type {RequestOptions}
16 */
17 var options = {
18 method: 'GET',
19 baseURL: '',
20 url: '',
21 model: null,
22 query: null,
23 headers: null,
24 body: null,
25 timeout: 0,
26 jsonpDefaultTimeout: 60000,
27 cors: false,
28 noCache: false,
29 noCacheHeaders: {
30 'Pragma': 'no-cache',
31 'Cache-Control': 'no-cache, no-store, must-revalidate'
32 },
33 jsonp: 'callback',
34 settings: {},
35 controller: null,
36 requestFunctionName: null,
37 requestType: null,
38 xhrProps: null,
39 username: null,
40 password: null,
41 httpRequestBodyProcessor: {
42 raw: {
43 priority: 0,
44 headers: null,
45 processor: null,
46 },
47 form: {
48 priority: 1,
49 headers: {
50 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
51 },
52 processor: function (data, options) {
53 return encodeQueryString(data);
54 }
55 },
56 json: {
57 priority: 2,
58 headers: {
59 'Content-Type': 'application/json; charset=UTF-8'
60 },
61 processor: function (data, options) {
62 return JSON.stringify(data);
63 }
64 }
65 },
66 httpResponseMixin: {
67 json: function () {
68 // `this` is point to the current instance of `HttpResponse`.
69 var responseText = this.request.xhr.responseText;
70 return responseText ? JSON.parse(responseText) : null;
71 },
72 text: function () {
73 return this.request.xhr.responseText;
74 },
75 status: function () {
76 return this.request.xhr.status;
77 }
78 },
79 jsonpResponseMixin: {
80 json: function () {
81 return this.request.responseJSON;
82 }
83 },
84 httpResponseErrorMixin: null,
85 jsonpResponseErrorMixin: null,
86 handleOptions: null,
87 createXHR: function (options) {
88 return new XMLHttpRequest();
89 },
90 createScript: function (options) {
91 var script = document.createElement('script');
92
93 script.setAttribute('type', 'text/javascript');
94 script.setAttribute('charset', 'utf-8');
95
96 return script;
97 },
98 jsonpContainerNode: function (options) {
99 return document.head || document.getElementsByName('head')[0];
100 },
101 jsonpCallbackName: function (options) {
102 return 'jsonp_' + uuid() + '_' + (new Date().getTime());
103 },
104 compileURL: function (url, model, options) {
105 return template(url, model);
106 },
107 encodeQueryString: function (query, options) {
108 return encodeQueryString(query);
109 },
110 onXhrCreated: null,
111 onXhrOpened: null,
112 onXhrSent: null,
113 onRequestCreated: null,
114 isResponseOk: function (requestType, response) {
115 var isOk;
116 var status;
117
118 // Http request
119 if (requestType === HTTP_REQUEST) {
120 status = +response.request.xhr.status;
121 isOk = (status >= 200 && status < 300) || status === 304;
122 // JSONP request
123 } else {
124 isOk = true;
125 }
126
127 return isOk;
128 },
129 transformError: null,
130 transformResponse: null,
131 shouldCallErrorCallback: null,
132 shouldCallSuccessCallback: null
133 };
134
135 return options;
136}
137
138module.exports = createDefaultOptions;