Sindbad~EG File Manager
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.multipartRequestDataProcessor = void 0;
const utils_js_1 = require("./utils.js");
// Method for formatting HTTP body for the multipart/form-data specification
// Mostly taken from Fermata.js
// https://github.com/natevw/fermata/blob/5d9732a33d776ce925013a265935facd1626cc88/fermata.js#L315-L343
const multipartDataGenerator = (method, data, headers) => {
const segno = (Math.round(Math.random() * 1e16) + Math.round(Math.random() * 1e16)).toString();
headers['Content-Type'] = `multipart/form-data; boundary=${segno}`;
const textEncoder = new TextEncoder();
let buffer = new Uint8Array(0);
const endBuffer = textEncoder.encode('\r\n');
function push(l) {
const prevBuffer = buffer;
const newBuffer = l instanceof Uint8Array ? l : new Uint8Array(textEncoder.encode(l));
buffer = new Uint8Array(prevBuffer.length + newBuffer.length + 2);
buffer.set(prevBuffer);
buffer.set(newBuffer, prevBuffer.length);
buffer.set(endBuffer, buffer.length - 2);
}
function q(s) {
return `"${s.replace(/"|"/g, '%22').replace(/\r\n|\r|\n/g, ' ')}"`;
}
const flattenedData = (0, utils_js_1.flattenAndStringify)(data);
for (const k in flattenedData) {
const v = flattenedData[k];
push(`--${segno}`);
if (Object.prototype.hasOwnProperty.call(v, 'data')) {
const typedEntry = v;
push(`Content-Disposition: form-data; name=${q(k)}; filename=${q(typedEntry.name || 'blob')}`);
push(`Content-Type: ${typedEntry.type || 'application/octet-stream'}`);
push('');
push(typedEntry.data);
}
else {
push(`Content-Disposition: form-data; name=${q(k)}`);
push('');
push(v);
}
}
push(`--${segno}--`);
return buffer;
};
function multipartRequestDataProcessor(method, data, headers, callback) {
data = data || {};
if (method !== 'POST') {
return callback(null, (0, utils_js_1.stringifyRequestData)(data));
}
this._stripe._platformFunctions
.tryBufferData(data)
.then((bufferedData) => {
const buffer = multipartDataGenerator(method, bufferedData, headers);
return callback(null, buffer);
})
.catch((err) => callback(err, null));
}
exports.multipartRequestDataProcessor = multipartRequestDataProcessor;
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists