"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractUploadHeaders = exports.readFileHeaders = void 0; const error_1 = require("./error"); /** * Read the filename from the content-disposition header * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition * * @param header the content-disposition header value * * @returns the filename */ function readContentDispositionFilename(header) { if (!header) { throw new error_1.BeeError('missing content-disposition header'); } // Regex was found here // https://stackoverflow.com/questions/23054475/javascript-regex-for-extracting-filename-from-content-disposition-header const dispositionMatch = header.match(/filename\*?=['"]?(?:UTF-\d['"]*)?([^;\r\n"']*)['"]?;?/i); if (dispositionMatch && dispositionMatch.length > 0) { return dispositionMatch[1]; } throw new error_1.BeeError('invalid content-disposition header'); } function readTagUid(header) { if (!header) { return undefined; } return parseInt(header, 10); } function readFileHeaders(headers) { const name = readContentDispositionFilename(headers.get('content-disposition')); const tagUid = readTagUid(headers.get('swarm-tag-uid')); const contentType = headers.get('content-type') || undefined; return { name, tagUid, contentType, }; } exports.readFileHeaders = readFileHeaders; function extractUploadHeaders(postageBatchId, options) { if (!postageBatchId) { throw new error_1.BeeError('Postage BatchID has to be specified!'); } const headers = { 'swarm-postage-batch-id': postageBatchId, }; if (options === null || options === void 0 ? void 0 : options.pin) headers['swarm-pin'] = String(options.pin); if (options === null || options === void 0 ? void 0 : options.encrypt) headers['swarm-encrypt'] = String(options.encrypt); if (options === null || options === void 0 ? void 0 : options.tag) headers['swarm-tag'] = String(options.tag); if (typeof (options === null || options === void 0 ? void 0 : options.deferred) === 'boolean') headers['swarm-deferred-upload'] = options.deferred.toString(); return headers; } exports.extractUploadHeaders = extractUploadHeaders;