1 | var isFunction = require('x-common-utils/isFunction');
|
2 | var HttpResponseError = require('../class/HttpResponseError');
|
3 | var JSONPResponseError = require('../class/JSONPResponseError');
|
4 | var constants = require('../shared/constants');
|
5 | var HTTP_REQUEST = constants.HTTP_REQUEST;
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | function 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 |
|
66 | module.exports = fireCallbacks;
|