MCPcopy
hub / github.com/gildas-lormeau/zip.js / initHttpReader

Function initHttpReader

index.cjs:2746–2783  ·  view source on GitHub ↗
(httpReader, sendRequest, getRequestData)

Source from the content-addressed store, hash-verified

2744}
2745
2746async 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
2785async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest, getRequestData) {
2786 const {

Callers 2

initMethod · 0.70
initMethod · 0.70

Calls 5

arrayBufferMethod · 0.80
isHttpFamilyFunction · 0.70
getRangeHeadersFunction · 0.70
getContentLengthFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…