all files / pdfviewer/base/ ajax-handler.js

63.08% Statements 82/130
47.06% Branches 32/68
63.16% Functions 12/19
63.08% Lines 82/130
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 1971×   1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1×   1× 1× 1× 1× 1×           1×   1× 3× 3× 3×       3× 3×   3× 3×     1×                           1×       1× 1× 1×   1× 1× 1×   1× 3× 3× 3× 3× 1× 1× 1×         1× 1×                       3×           3×   1× 1× 1× 1× 1× 1× 1× 1×   1×   1× 1× 1× 1×     1×   1× 3× 3× 3× 1× 1× 1×         1×           1×   2×                 1×               1×                         1× 1× 1×       1×           1×           1× 1× 1×         1×   1×    
define(["require", "exports", "@syncfusion/ej2-base"], function (require, exports, ej2_base_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var AjaxHandler = (function () {
        function AjaxHandler(pdfviewer) {
            this.type = 'POST';
            this.mode = true;
            this.contentType = 'application/json;charset=UTF-8';
            this.retryTimeout = 0;
            this.pdfViewer = pdfviewer;
            this.retryCount = pdfviewer.retryCount;
            this.retryStatusCodes = pdfviewer.retryStatusCodes;
            this.retryTimeout = 1000 * pdfviewer.retryTimeout;
        }
        AjaxHandler.prototype.send = function (jsonObj) {
            var _this = this;
            this.httpRequest = new XMLHttpRequest();
            this.httpRequest.timeout = this.retryTimeout;
            Iif (!this.mode) {
                setTimeout(function () {
                    _this.sendRequest(jsonObj);
                });
            }
            else {
                this.sendRequest(jsonObj);
            }
            this.httpRequest.onreadystatechange = function () {
                var isSkip = false;
                var viewerBase = _this.pdfViewer.viewerBase;
                Iif (viewerBase && viewerBase.isPasswordAvailable && viewerBase.passwordData === '') {
                    isSkip = true;
                    _this.retryCount = 0;
                }
                Eif (_this.retryCount > 0) {
                    isSkip = _this.resendRequest(_this, jsonObj, false);
                }
                Eif (!isSkip) {
                    _this.stateChange(_this);
                }
            };
            this.httpRequest.ontimeout = function () {
                var isSkip = false;
                var viewerBase = _this.pdfViewer.viewerBase;
                if (viewerBase && viewerBase.isPasswordAvailable && viewerBase.passwordData === '') {
                    isSkip = true;
                    _this.retryCount = 0;
                }
                if (_this.retryCount > 0) {
                    isSkip = _this.resendRequest(_this, jsonObj, true);
                }
                if (!isSkip) {
                    _this.stateChange(_this);
                }
            };
            this.httpRequest.onerror = function () {
                _this.error(_this);
            };
        };
        AjaxHandler.prototype.clear = function () {
            Eif (this.httpRequest) {
                this.httpRequest.abort();
            }
            this.onSuccess = null;
            this.onFailure = null;
            this.onError = null;
        };
        AjaxHandler.prototype.resendRequest = function (proxy, jsonObj, isTimeout) {
            var isSkip = false;
            var status = proxy.httpRequest.status;
            var statusString = this.retryStatusCodes.indexOf(status) !== -1;
            if (proxy.httpRequest.readyState === 4 && status === 200) {
                var data = void 0;
                Eif (this.responseType !== null) {
                    data = proxy.httpRequest.response;
                }
                else {
                    data = proxy.httpRequest.responseText;
                }
                Eif (data) {
                    Iif (typeof data !== 'object') {
                        try {
                            data = JSON.parse(data);
                        }
                        catch (error) {
                            if (data === 'Document stream does not exist in the cache' || data === 'Document Reference pointer does not exist in the cache') {
                                isSkip = true;
                            }
                        }
                    }
                }
            }
            Iif (statusString || isSkip || isTimeout) {
                isSkip = true;
                this.retryCount--;
                proxy.pdfViewer.fireAjaxRequestFailed(status, proxy.httpRequest.statusText, jsonObj.action, true);
                proxy.send(jsonObj);
            }
            return isSkip;
        };
        AjaxHandler.prototype.sendRequest = function (jsonObj) {
            this.httpRequest.open(this.type, this.url, this.mode);
            this.httpRequest.withCredentials = this.pdfViewer.ajaxRequestSettings.withCredentials;
            this.httpRequest.setRequestHeader('Content-Type', this.contentType);
            jsonObj = this.addExtraData(jsonObj);
            this.setCustomAjaxHeaders();
            Eif (this.responseType !== null) {
                this.httpRequest.responseType = this.responseType;
            }
            this.httpRequest.send(JSON.stringify(jsonObj));
        };
        AjaxHandler.prototype.addExtraData = function (jsonObject) {
            this.pdfViewer.viewerBase.ajaxData = '';
            this.pdfViewer.fireAjaxRequestInitiate(jsonObject);
            Iif (this.pdfViewer.viewerBase.ajaxData && this.pdfViewer.viewerBase.ajaxData !== '') {
                jsonObject = this.pdfViewer.viewerBase.ajaxData;
            }
            return jsonObject;
        };
        AjaxHandler.prototype.stateChange = function (proxy) {
            var status = proxy.httpRequest.status;
            var statusString = status.toString().split('')[0];
            if (proxy.httpRequest.readyState === 4 && status === 200) {
                var data = void 0;
                Eif (this.responseType !== null) {
                    data = proxy.httpRequest.response;
                }
                else {
                    data = proxy.httpRequest.responseText;
                }
                var result = {
                    name: 'onSuccess',
                    data: data,
                    readyState: proxy.httpRequest.readyState,
                    status: proxy.httpRequest.status
                };
                proxy.successHandler(result);
            }
            else Iif (proxy.httpRequest.readyState === 4 && (statusString === '4' || statusString === '5')) {
                var result = {
                    name: 'onFailure',
                    status: proxy.httpRequest.status,
                    statusText: proxy.httpRequest.statusText
                };
                proxy.failureHandler(result);
            }
        };
        AjaxHandler.prototype.error = function (proxy) {
            var result = {
                name: 'onError',
                status: this.httpRequest.status,
                statusText: this.httpRequest.statusText
            };
            proxy.errorHandler(result);
        };
        AjaxHandler.prototype.destroy = function () {
            this.url = null;
            this.type = null;
            this.responseType = null;
            this.mode = null;
            this.contentType = null;
            this.httpRequest = null;
            this.retryStatusCodes = null;
            this.retryTimeout = null;
            this.onSuccess = null;
            this.onFailure = null;
            this.onError = null;
        };
        AjaxHandler.prototype.successHandler = function (response) {
            Eif (this.onSuccess) {
                this.onSuccess(response);
            }
            return response;
        };
        AjaxHandler.prototype.failureHandler = function (response) {
            if (this.onFailure) {
                this.onFailure(response);
            }
            return response;
        };
        AjaxHandler.prototype.errorHandler = function (response) {
            if (this.onError) {
                this.onError(response);
            }
            return response;
        };
        AjaxHandler.prototype.setCustomAjaxHeaders = function () {
            Eif (!ej2_base_1.isNullOrUndefined(this.pdfViewer.ajaxRequestSettings) && !ej2_base_1.isNullOrUndefined(this.pdfViewer.ajaxRequestSettings.ajaxHeaders)) {
                for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {
                    this.httpRequest.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);
                }
            }
        };
        return AjaxHandler;
    }());
    exports.AjaxHandler = AjaxHandler;
});