UNPKG

x-http-client

Version:

An http client to simplify sending requests (HTTP & JSONP) in the browser.

67 lines (62 loc) 2.37 kB
var isFunction = require('x-common-utils/isFunction'); var HttpResponseError = require('../class/HttpResponseError'); var JSONPResponseError = require('../class/JSONPResponseError'); var constants = require('../shared/constants'); var HTTP_REQUEST = constants.HTTP_REQUEST; /** * Fire the callbacks. * * @param {string|null} code If there is an error, `code` should be a string. If there is no error, `code` is `null`. * @param {HttpResponse|JSONPResponse} response The response instance. */ function fireCallbacks(code, response) { var request = response.request; var requestType = request.requestType; var options = request.options; var onsuccess = request.onsuccess; var onerror = request.onerror; var shouldCallErrorCallback = options.shouldCallErrorCallback; var shouldCallSuccessCallback = options.shouldCallSuccessCallback; var transformError = options.transformError; var transformResponse = options.transformResponse; var error = null; var callErrorCallback = true; var callSuccessCallback = true; var transformedError = null; var transformedResponse = null; if (code) { if (requestType === HTTP_REQUEST) { error = new HttpResponseError(code, request); } else { error = new JSONPResponseError(code, request); } if (isFunction(transformError)) { transformedError = transformError(requestType, error); } else { transformedError = error; } if (isFunction(shouldCallErrorCallback)) { callErrorCallback = shouldCallErrorCallback(requestType, transformedError, error); } if (callErrorCallback) { if (isFunction(onerror)) { onerror(transformedError); } } } else { if (isFunction(transformResponse)) { transformedResponse = transformResponse(requestType, response); } else { transformedResponse = response; } if (isFunction(shouldCallSuccessCallback)) { callSuccessCallback = shouldCallSuccessCallback(requestType, transformedResponse, response); } if (callSuccessCallback) { if (isFunction(onsuccess)) { onsuccess(transformedResponse); } } } } module.exports = fireCallbacks;