12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /**
- * @licstart The following is the entire license notice for the
- * JavaScript code in this page
- *
- * Copyright 2022 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * @licend The above is the entire license notice for the
- * JavaScript code in this page
- */
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.createResponseStatusError = createResponseStatusError;
- exports.extractFilenameFromHeader = extractFilenameFromHeader;
- exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
- exports.validateResponseStatus = validateResponseStatus;
- var _util = require("../shared/util.js");
- var _content_disposition = require("./content_disposition.js");
- var _display_utils = require("./display_utils.js");
- function validateRangeRequestCapabilities({
- getResponseHeader,
- isHttp,
- rangeChunkSize,
- disableRange
- }) {
- const returnValues = {
- allowRangeRequests: false,
- suggestedLength: undefined
- };
- const length = parseInt(getResponseHeader("Content-Length"), 10);
- if (!Number.isInteger(length)) {
- return returnValues;
- }
- returnValues.suggestedLength = length;
- if (length <= 2 * rangeChunkSize) {
- return returnValues;
- }
- if (disableRange || !isHttp) {
- return returnValues;
- }
- if (getResponseHeader("Accept-Ranges") !== "bytes") {
- return returnValues;
- }
- const contentEncoding = getResponseHeader("Content-Encoding") || "identity";
- if (contentEncoding !== "identity") {
- return returnValues;
- }
- returnValues.allowRangeRequests = true;
- return returnValues;
- }
- function extractFilenameFromHeader(getResponseHeader) {
- const contentDisposition = getResponseHeader("Content-Disposition");
- if (contentDisposition) {
- let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
- if (filename.includes("%")) {
- try {
- filename = decodeURIComponent(filename);
- } catch (ex) {}
- }
- if ((0, _display_utils.isPdfFile)(filename)) {
- return filename;
- }
- }
- return null;
- }
- function createResponseStatusError(status, url) {
- if (status === 404 || status === 0 && url.startsWith("file:")) {
- return new _util.MissingPDFException('Missing PDF "' + url + '".');
- }
- return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status);
- }
- function validateResponseStatus(status) {
- return status === 200 || status === 206;
- }
|