39501daa-c150-4435-9003-cfc8305326d0.js.map 13.6 KB
{"version":3,"sources":["assets/script/network/HttpClient.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["export class HttpError extends Error {\r\n    status: number;\r\n    constructor(status: number, message: string) {\r\n        super(message);\r\n        this.status = status;\r\n    }\r\n}\r\n\r\nexport interface HttpResponsePromise extends Promise<string | ArrayBuffer> {\r\n    abort: () => void;\r\n}\r\n\r\nexport class HttpClient {\r\n    private serverBaseUrl = \"\";\r\n    private authorization: string = null;\r\n    private maxConcurrency = 0;\r\n    private currentRequestNum = 0;\r\n    private pendingRequests: HttpRequest[] = [];\r\n    private responsePreprocessor: (response: string | ArrayBuffer | Blob) => string | ArrayBuffer;\r\n\r\n    constructor(baseUrl: string, maxConcurrency = 0) {\r\n        this.serverBaseUrl = baseUrl;\r\n        this.maxConcurrency = maxConcurrency;\r\n    }\r\n\r\n    setAuthorization(authorization: string) {\r\n        this.authorization = authorization;\r\n    }\r\n\r\n    setResponsePreprocessor(func: (response: string | ArrayBuffer | Blob) => string | ArrayBuffer) {\r\n        this.responsePreprocessor = func;\r\n    }\r\n\r\n    get(path: string = \"\", timeout = 5000, headers?: { [key: string]: string }) {\r\n        return this._handleRequest({\r\n            path,\r\n            method: \"GET\",\r\n            timeout,\r\n            headers\r\n        });\r\n    }\r\n\r\n    post(path: string = \"\", timeout = 5000, body?: string | ArrayBuffer, contentType?: string, headers?: { [key: string]: string }) {\r\n\r\n        return this._handleRequest({\r\n            path,\r\n            method: \"POST\",\r\n            timeout,\r\n            contentType,\r\n            headers\r\n        }, body);\r\n    }\r\n\r\n    put(path: string = \"\", timeout = 5000, body?: string | ArrayBuffer, contentType?: string, headers?: { [key: string]: string }) {\r\n        return this._handleRequest({\r\n            path,\r\n            method: \"POST\",\r\n            timeout,\r\n            contentType,\r\n            headers\r\n        }, body);\r\n    }\r\n\r\n    delete(path: string = \"\", timeout = 5000, headers?: { [key: string]: string }) {\r\n        return this._handleRequest({\r\n            path,\r\n            method: \"GET\",\r\n            timeout,\r\n            headers\r\n        });\r\n    }\r\n\r\n    private _handleRequest(request: HttpRequest, body?: string | ArrayBuffer): HttpResponsePromise {\r\n        let promise: HttpResponsePromise = new Promise<string | ArrayBuffer>((resolve, reject) => {\r\n            request.onSuccess = resolve;\r\n            request.onError = reject;\r\n            if (this.maxConcurrency > 0 && this.currentRequestNum >= this.maxConcurrency) {\r\n                this.pendingRequests.push(request);\r\n            } else {\r\n                this._doRequest(request, body);\r\n            }\r\n        }) as HttpResponsePromise;\r\n        request.promise = promise;\r\n        if (request.abort) {\r\n            promise.abort = request.abort;\r\n        } else {\r\n            promise.abort = () => {\r\n                let idx = this.pendingRequests.indexOf(request);\r\n                if (idx >= 0) {\r\n                    this.pendingRequests.splice(idx, 1);\r\n                }\r\n            }\r\n        }\r\n        return promise;\r\n    }\r\n\r\n    private _doRequest(request: HttpRequest, body?: string | ArrayBuffer) {\r\n        this.currentRequestNum++;\r\n        const xhr = new XMLHttpRequest();\r\n        xhr.timeout = request.timeout;\r\n        xhr.open(request.method, this.serverBaseUrl + request.path, true);\r\n        if (request.contentType) {\r\n            xhr.setRequestHeader(\"Content-Type\", request.contentType);\r\n        }\r\n        if (request.headers) {\r\n            for (let key in request.headers) {\r\n                xhr.setRequestHeader(key, request.headers[key]);\r\n            }\r\n        }\r\n        let abort = () => {\r\n            xhr.abort();\r\n        };;\r\n        if (request.promise) {\r\n            request.promise.abort = abort;\r\n        } else {\r\n            request.abort = abort;\r\n        }\r\n        xhr.onreadystatechange = () => {\r\n            if (xhr.readyState == 4) {\r\n                if (!request.onError) return;\r\n                if (xhr.status == 200) {\r\n                    let response = xhr.responseText ? xhr.responseText : xhr.response;\r\n                    if (response && this.responsePreprocessor) {\r\n                        response = this.responsePreprocessor(response);\r\n                    }\r\n                    request.onSuccess(response);\r\n                } else {\r\n                    request.onError(new HttpError(xhr.status, getHttpStatusError(xhr.status)));\r\n                }\r\n                if (this.pendingRequests.length) {\r\n                    this._doRequest(this.pendingRequests.shift());\r\n                } else {\r\n                    this.currentRequestNum--;\r\n                }\r\n            }\r\n        };\r\n        xhr.ontimeout = () => {\r\n            if (request.onError) {\r\n                request.onError(new HttpError(408, getHttpStatusError(408)));\r\n                request.onError = null;\r\n                request.onSuccess = null;\r\n                if (this.pendingRequests.length) {\r\n                    this._doRequest(this.pendingRequests.shift());\r\n                } else {\r\n                    this.currentRequestNum--;\r\n                }\r\n            }\r\n        };\r\n        xhr.onabort = () => {\r\n            if (request.onError) {\r\n                request.onError(new HttpError(-1, \"Request abort.\"));\r\n                request.onError = null;\r\n                request.onSuccess = null;\r\n                if (this.pendingRequests.length) {\r\n                    this._doRequest(this.pendingRequests.shift());\r\n                } else {\r\n                    this.currentRequestNum--;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (this.authorization) {\r\n            xhr.setRequestHeader(\"auth-token\", this.authorization);\r\n        }\r\n\r\n        xhr.send(body);\r\n    }\r\n}\r\n\r\ninterface HttpRequest {\r\n    path: string;\r\n    method: string;\r\n    timeout: number;\r\n    promise?: HttpResponsePromise;\r\n    contentType?: string;\r\n    body?: string | ArrayBuffer;\r\n    abort?: () => void;\r\n    headers?: { [key: string]: string };\r\n    onSuccess?: (result: string | ArrayBuffer) => void;\r\n    onError?: (error: HttpError) => void;\r\n}\r\n\r\nfunction getHttpStatusError(status: number) {\r\n    switch (status) {\r\n        case 400: return \"Bad request.\";\r\n        case 401: return \"Unauthorized.\";\r\n        case 402: return \"Payment required.\";\r\n        case 403: return \"Forbidden.\";\r\n        case 404: return \"Not found.\";\r\n        case 405: return \"Method not allowed.\";\r\n        case 406: return \"Not acceptable.\";\r\n        case 407: return \"Proxy authentication required.\";\r\n        case 408: return \"Request timeout.\";\r\n        case 409: return \"Conflict.\";\r\n        case 410: return \"Gone.\";\r\n        case 411: return \"Length required.\";\r\n        case 412: return \"Precondition failed.\";\r\n        case 413: return \"Payload too large.\";\r\n        case 414: return \"URI too long.\";\r\n        case 416: return \"Requested range not satisfiable.\";\r\n        case 417: return \"Expectation failed.\";\r\n        case 427: return \"Precondition required.\";\r\n        case 429: return \"Too many requests.\";\r\n        case 449: return \"Retry after doing the appropriate action.\";\r\n        case 500: return \"Internal server error.\";\r\n        case 501: return \"Server does not support the functionality required to fulfill the request.\";\r\n        case 502: return \"Error response received from gateway.\";\r\n        case 503: return \"Temporarily overloaded.\";\r\n        case 504: return \"Timed out waiting for gateway.\";\r\n        case 505: return \"HTTP version not supported.\";\r\n    }\r\n    return \"Unknown error code: \" + status;\r\n}\r\n"]}