Co-authored-by: scott@signal.org
Co-authored-by: ken@signal.org
This commit is contained in:
Ken Powers 2019-05-16 15:32:11 -07:00 committed by Scott Nonnenberg
parent 8c8856785b
commit 29de50c12a
100 changed files with 7572 additions and 693 deletions

View file

@ -18,6 +18,7 @@ module.exports = {
isLinkInWhitelist,
isMediaLinkInWhitelist,
isLinkSneaky,
isStickerPack,
};
const SUPPORTED_DOMAINS = [
@ -37,7 +38,9 @@ const SUPPORTED_DOMAINS = [
'pinterest.com',
'www.pinterest.com',
'pin.it',
'signal.org',
];
function isLinkInWhitelist(link) {
try {
const url = new URL(link);
@ -61,6 +64,10 @@ function isLinkInWhitelist(link) {
}
}
function isStickerPack(link) {
return (link || '').startsWith('https://signal.org/addstickers/');
}
const SUPPORTED_MEDIA_DOMAINS = /^([^.]+\.)*(ytimg.com|cdninstagram.com|redd.it|imgur.com|fbcdn.net|pinimg.com)$/i;
function isMediaLinkInWhitelist(link) {
try {
@ -138,28 +145,33 @@ function getDomain(url) {
const MB = 1024 * 1024;
const KB = 1024;
function getChunkPattern(size) {
function getChunkPattern(size, initialOffset) {
if (size > MB) {
return _getRequestPattern(size, MB);
return _getRequestPattern(size, MB, initialOffset);
} else if (size > 500 * KB) {
return _getRequestPattern(size, 500 * KB);
return _getRequestPattern(size, 500 * KB, initialOffset);
} else if (size > 100 * KB) {
return _getRequestPattern(size, 100 * KB);
return _getRequestPattern(size, 100 * KB, initialOffset);
} else if (size > 50 * KB) {
return _getRequestPattern(size, 50 * KB);
return _getRequestPattern(size, 50 * KB, initialOffset);
} else if (size > 10 * KB) {
return _getRequestPattern(size, 10 * KB);
return _getRequestPattern(size, 10 * KB, initialOffset);
} else if (size > KB) {
return _getRequestPattern(size, KB);
return _getRequestPattern(size, KB, initialOffset);
}
throw new Error(`getChunkPattern: Unsupported size: ${size}`);
return {
start: {
start: initialOffset,
end: size - 1,
},
};
}
function _getRequestPattern(size, increment) {
function _getRequestPattern(size, increment, initialOffset) {
const results = [];
let offset = 0;
let offset = initialOffset || 0;
while (size - offset > increment) {
results.push({
start: offset,