UNPKG

2.37 kBJavaScriptView Raw
1var isFunction = require('x-common-utils/isFunction');
2var HttpResponseError = require('../class/HttpResponseError');
3var JSONPResponseError = require('../class/JSONPResponseError');
4var constants = require('../shared/constants');
5var HTTP_REQUEST = constants.HTTP_REQUEST;
6
7/**
8 * Fire the callbacks.
9 *
10 * @param {string|null} code If there is an error, `code` should be a string. If there is no error, `code` is `null`.
11 * @param {HttpResponse|JSONPResponse} response The response instance.
12 */
13function fireCallbacks(code, response) {
14 var request = response.request;
15 var requestType = request.requestType;
16 var options = request.options;
17 var onsuccess = request.onsuccess;
18 var onerror = request.onerror;
19 var shouldCallErrorCallback = options.shouldCallErrorCallback;
20 var shouldCallSuccessCallback = options.shouldCallSuccessCallback;
21 var transformError = options.transformError;
22 var transformResponse = options.transformResponse;
23
24 var error = null;
25 var callErrorCallback = true;
26 var callSuccessCallback = true;
27 var transformedError = null;
28 var transformedResponse = null;
29
30 if (code) {
31 if (requestType === HTTP_REQUEST) {
32 error = new HttpResponseError(code, request);
33 } else {
34 error = new JSONPResponseError(code, request);
35 }
36 if (isFunction(transformError)) {
37 transformedError = transformError(requestType, error);
38 } else {
39 transformedError = error;
40 }
41 if (isFunction(shouldCallErrorCallback)) {
42 callErrorCallback = shouldCallErrorCallback(requestType, transformedError, error);
43 }
44 if (callErrorCallback) {
45 if (isFunction(onerror)) {
46 onerror(transformedError);
47 }
48 }
49 } else {
50 if (isFunction(transformResponse)) {
51 transformedResponse = transformResponse(requestType, response);
52 } else {
53 transformedResponse = response;
54 }
55 if (isFunction(shouldCallSuccessCallback)) {
56 callSuccessCallback = shouldCallSuccessCallback(requestType, transformedResponse, response);
57 }
58 if (callSuccessCallback) {
59 if (isFunction(onsuccess)) {
60 onsuccess(transformedResponse);
61 }
62 }
63 }
64}
65
66module.exports = fireCallbacks;