@ -11,6 +11,14 @@ const { HTTP, HTTPS, KILOBYTES } = require('./MagicNumbers.json');
const path = ( ... paths ) => Path . join ( _ _dirname , ... paths ) ;
function getTrueHttp ( ) {
return ( 'http' ) . concat ( useSsl ? 's' : '' ) . concat ( '://' ) ;
}
function getTrueDomain ( d = domain ) {
return d . concat ( ( port === HTTP || port === HTTPS || isProxied ) ? '' : ` : ${ port } ` ) ;
}
function getSafeExt ( type ) {
return type . includes ( 'video' ) ? '.mp4' : type . includes ( 'gif' ) ? '.gif' : '' ;
}
@ -19,6 +27,14 @@ function getS3url(s3key, type) {
return ` https:// ${ s3bucket } . ${ s3endpoint } / ${ s3key } ${ getSafeExt ( type ) } ` ;
}
function randomHexColour ( ) { // From: https://www.geeksforgeeks.org/javascript-generate-random-hex-codes-color/
const letters = "0123456789ABCDEF" ;
let colour = '#' ;
for ( let i = 0 ; i < 6 ; i ++ ) // skipcq: JS-0074
colour += letters [ ( Math . floor ( Math . random ( ) * letters . length ) ) ] ;
return colour ;
}
const idModes = {
zws : 'zws' , // Zero-width spaces (see: https://zws.im/)
og : 'original' , // Use original uploaded filename
@ -33,11 +49,12 @@ GENERATORS.set(idModes.gfy, gfyGen);
module . exports = {
path ,
getTrueHttp ,
getTrueDomain ,
randomHexColour ,
log : console . log ,
saveData : ( data ) => fs . writeJsonSync ( Path . join ( _ _dirname , 'data.json' ) , data , { spaces : 4 } ) ,
verify : ( req , users ) => req . headers . authorization && Object . prototype . hasOwnProperty . call ( users , req . headers . authorization ) ,
getTrueHttp : ( ) => ( 'http' ) . concat ( useSsl ? 's' : '' ) . concat ( '://' ) ,
getTrueDomain : ( d = domain ) => d . concat ( ( port === HTTP || port === HTTPS || isProxied ) ? '' : ` : ${ port } ` ) ,
renameFile : ( req , newName ) => new Promise ( ( resolve , reject ) => {
try {
const paths = [ req . file . destination , newName ] ;
@ -56,13 +73,6 @@ module.exports = {
const i = Math . floor ( Math . log ( bytes ) / Math . log ( KILOBYTES ) ) ;
return parseFloat ( ( bytes / Math . pow ( KILOBYTES , i ) ) . toFixed ( decimals < 0 ? 0 : decimals ) ) . toString ( ) . concat ( ` ${ sizes [ i ] } ` ) ;
} ,
randomHexColour : ( ) => { // From: https://www.geeksforgeeks.org/javascript-generate-random-hex-codes-color/
const letters = "0123456789ABCDEF" ;
let colour = '#' ;
for ( let i = 0 ; i < 6 ; i ++ ) // skipcq: JS-0074
colour += letters [ ( Math . floor ( Math . random ( ) * letters . length ) ) ] ;
return colour ;
} ,
arrayEquals : ( arr1 , arr2 ) => arr1 . length === arr2 . length && arr1 . slice ( ) . sort ( ) . every ( ( value , index ) => value === arr2 . slice ( ) . sort ( ) [ index ] ) ,
downloadTempS3 : ( file ) => new Promise ( ( resolve , reject ) =>
fetch ( getS3url ( file . randomId , file . mimetype ) )