(httpReader, sendRequest, getRequestData)
| 2744 | } |
| 2745 | |
| 2746 | async function initHttpReader(httpReader, sendRequest, getRequestData) { |
| 2747 | const { |
| 2748 | url, |
| 2749 | preventHeadRequest, |
| 2750 | useRangeHeader, |
| 2751 | forceRangeRequests, |
| 2752 | combineSizeEocd |
| 2753 | } = httpReader; |
| 2754 | if (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest == "undefined" || preventHeadRequest)) { |
| 2755 | const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, combineSizeEocd ? -END_OF_CENTRAL_DIR_LENGTH : undefined)); |
| 2756 | const acceptRanges = response.headers.get(HTTP_HEADER_ACCEPT_RANGES); |
| 2757 | if (!forceRangeRequests && (!acceptRanges || acceptRanges.toLowerCase() != HTTP_RANGE_UNIT)) { |
| 2758 | throw new Error(ERR_HTTP_RANGE); |
| 2759 | } else { |
| 2760 | if (combineSizeEocd) { |
| 2761 | httpReader.eocdCache = new Uint8Array(await response.arrayBuffer()); |
| 2762 | } |
| 2763 | let contentSize; |
| 2764 | const contentRangeHeader = response.headers.get(HTTP_HEADER_CONTENT_RANGE); |
| 2765 | if (contentRangeHeader) { |
| 2766 | const splitHeader = contentRangeHeader.trim().split(/\s*\/\s*/); |
| 2767 | if (splitHeader.length) { |
| 2768 | const headerValue = splitHeader[1]; |
| 2769 | if (headerValue && headerValue != "*") { |
| 2770 | contentSize = Number(headerValue); |
| 2771 | } |
| 2772 | } |
| 2773 | } |
| 2774 | if (contentSize === UNDEFINED_VALUE) { |
| 2775 | await getContentLength(httpReader, sendRequest, getRequestData); |
| 2776 | } else { |
| 2777 | httpReader.size = contentSize; |
| 2778 | } |
| 2779 | } |
| 2780 | } else { |
| 2781 | await getContentLength(httpReader, sendRequest, getRequestData); |
| 2782 | } |
| 2783 | } |
| 2784 | |
| 2785 | async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest, getRequestData) { |
| 2786 | const { |
no test coverage detected
searching dependent graphs…