Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
};
const fetchContent = this.fetchContent.bind(this);
const defaultBody = { content, rawContent, rawResponse };
if (cdpResponse.response.status !== 200) {
// TODO: is this right? no-friendly-error-pages won't have a problem?
return defaultBody;
}
try {
await this.waitForContentLoaded(cdpResponse.requestId);
const { body, base64Encoded } = await this._client.Network.getResponseBody({ requestId: cdpResponse.requestId });
const encoding = base64Encoded ? 'base64' : 'utf-8';
content = base64Encoded ? atob(body) : body; // There are some JS responses that are base64Encoded for some weird reason
rawContent = Buffer.from(body, encoding);
const returnValue = {
content,
rawContent,
rawResponse(): Promise {
const self = (this as { _rawResponse: Promise });
if (self) {
const cached = self._rawResponse;
if (cached) {
return Promise.resolve(cached);
}
}
const normalizedHeaders = normalizeHeaders(headers);
const that = this;
let rawContent = Buffer.alloc(0);
let rBody = {
content: '',
rawContent,
rawResponse: () => {
return Promise.resolve(Buffer.alloc(0));
}
};
if (this._responseBody) {
const { body, base64Encoded } = this._responseBody;
const encoding = base64Encoded ? 'base64' : 'utf-8';
const content = base64Encoded ? atob(body) : body; // There are some JS responses that are base64 encoded for some reason
rawContent = Buffer.from(body, encoding);
rBody = {
content,
rawContent,
rawResponse: () => {
return that.getRawResponse();
}
};
}
this._response = {
body: rBody,
charset: null!,
headers: normalizedHeaders!,
const b64toBlob = (b64Data: string, sliceSize = 512) => {
let byteString;
let contentType = '';
if (b64Data.split(',')[0].indexOf('base64') >= 0) {
byteString = b64Data.split(',')[1];
}
if (byteString !== undefined) {
contentType = b64Data.split(',')[0].split(':')[1].split(';')[0];
b64Data = decodeURI(byteString);
}
const byteCharacters = atob(b64Data);
const byteArrays: any[] = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i += 1) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
};
exports.forgivingBase64Decode = data => {
const asString = atob(data);
if (asString === null) {
return null;
}
return Buffer.from(asString, "binary");
};
exports.forgivingBase64Decode = data => {
const asString = atob(data);
if (asString === null) {
return null;
}
return Buffer.from(asString, "binary");
};
this.atob = function (str) {
const result = atob(str);
if (result === null) {
throw new DOMException("The string to be decoded contains invalid characters.", "InvalidCharacterError");
}
return result;
};
this.atob = function (str) {
const result = atob(str);
if (result === null) {
throw new DOMException("The string to be decoded contains invalid characters.", "InvalidCharacterError");
}
return result;
};