Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/uploads/media-utils.js
Show All 24 Lines | return sharp(bitmap.data, { | ||||
raw: { | raw: { | ||||
width: bitmap.width, | width: bitmap.width, | ||||
height: bitmap.height, | height: bitmap.height, | ||||
channels: 4, | channels: 4, | ||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
function getMediaType(inputMimeType: string): 'photo' | 'video' | null { | |||||
if (!serverCanHandleTypes.has(inputMimeType)) { | |||||
return null; | |||||
} | |||||
const mediaType = mediaConfig[inputMimeType]?.mediaType; | |||||
invariant( | |||||
mediaType === 'photo' || mediaType === 'video', | |||||
`mediaType for ${inputMimeType} should be photo or video`, | |||||
); | |||||
return mediaType; | |||||
} | |||||
type ValidateAndConvertInput = { | type ValidateAndConvertInput = { | ||||
+initialBuffer: Buffer, | +initialBuffer: Buffer, | ||||
+initialName: string, | +initialName: string, | ||||
+inputDimensions: ?Dimensions, | +inputDimensions: ?Dimensions, | ||||
+inputLoop: boolean, | +inputLoop: boolean, | ||||
+inputEncryptionKey: ?string, | +inputEncryptionKey: ?string, | ||||
+inputMimeType: ?string, | +inputMimeType: ?string, | ||||
+size: number, // in bytes | +size: number, // in bytes | ||||
Show All 17 Lines | invariant( | ||||
inputMimeType, | inputMimeType, | ||||
'inputMimeType should be set in validateAndConvert for encrypted files', | 'inputMimeType should be set in validateAndConvert for encrypted files', | ||||
); | ); | ||||
invariant( | invariant( | ||||
inputDimensions, | inputDimensions, | ||||
'inputDimensions should be set in validateAndConvert for encrypted files', | 'inputDimensions should be set in validateAndConvert for encrypted files', | ||||
); | ); | ||||
if (!serverCanHandleTypes.has(inputMimeType)) { | const mediaType = getMediaType(inputMimeType); | ||||
if (!mediaType) { | |||||
return null; | return null; | ||||
} | } | ||||
const mediaType = mediaConfig[inputMimeType]?.mediaType; | |||||
invariant( | |||||
mediaType === 'photo' || mediaType === 'video', | |||||
`mediaType for ${inputMimeType} should be photo or video`, | |||||
); | |||||
return { | return { | ||||
name: initialName, | name: initialName, | ||||
mime: inputMimeType, | mime: inputMimeType, | ||||
mediaType, | mediaType, | ||||
content: { storage: 'keyserver', buffer: initialBuffer }, | content: { storage: 'keyserver', buffer: initialBuffer }, | ||||
dimensions: inputDimensions, | dimensions: inputDimensions, | ||||
loop: inputLoop, | loop: inputLoop, | ||||
▲ Show 20 Lines • Show All 129 Lines • ▼ Show 20 Lines | return { | ||||
mediaType: 'photo', | mediaType: 'photo', | ||||
name: convertedName, | name: convertedName, | ||||
content: { storage: 'keyserver', buffer: convertedBuffer }, | content: { storage: 'keyserver', buffer: convertedBuffer }, | ||||
dimensions: convertedDimensions, | dimensions: convertedDimensions, | ||||
loop: inputLoop, | loop: inputLoop, | ||||
}; | }; | ||||
} | } | ||||
export { validateAndConvert }; | export { getMediaType, validateAndConvert }; |