11import { Readable } from 'node:stream' ;
2- import { createReadStream } from 'node:fs' ;
32import { DriveFileService } from './drive/drive-file.service' ;
43import { StorageTypes } from '@internxt/sdk/dist/drive' ;
54import { NetworkFacade } from './network/network-facade.service' ;
65import { ThumbnailConfig , ThumbnailUtils } from '../utils/thumbnail.utils' ;
7- import { BufferStream } from '../utils/stream.utils' ;
86import { ErrorUtils } from '../utils/errors.utils' ;
97import { AsyncUtils } from '../utils/async.utils' ;
108
@@ -26,7 +24,7 @@ export class ThumbnailService {
2624 private static readonly MAX_THUMBNAIL_TIMEOUT = 30000 ;
2725
2826 public uploadThumbnail = async (
29- fileContent : Buffer ,
27+ input : string | Buffer ,
3028 fileType : string ,
3129 userBucket : string ,
3230 file_id : string ,
@@ -35,7 +33,7 @@ export class ThumbnailService {
3533 ) : Promise < StorageTypes . Thumbnail | undefined > => {
3634 let thumbnailBuffer : Buffer | undefined ;
3735 if ( ThumbnailUtils . isImageThumbnailable ( fileType , fileSize ) ) {
38- thumbnailBuffer = await this . getThumbnailFromImageBuffer ( fileContent ) ;
36+ thumbnailBuffer = await this . generateThumbnail ( input ) ;
3937 }
4038 if ( thumbnailBuffer ) {
4139 const size = thumbnailBuffer . length ;
@@ -61,10 +59,10 @@ export class ThumbnailService {
6159 }
6260 } ;
6361
64- private readonly getThumbnailFromImageBuffer = async ( buffer : Buffer ) : Promise < Buffer | undefined > => {
62+ private readonly generateThumbnail = async ( input : string | Buffer ) : Promise < Buffer | undefined > => {
6563 const sharp = await getSharp ( ) ;
6664 if ( sharp ) {
67- return sharp ( buffer , { failOn : 'none' } )
65+ return sharp ( input , { failOn : 'none' } )
6866 . resize ( {
6967 height : ThumbnailConfig . MaxHeight ,
7068 width : ThumbnailConfig . MaxWidth ,
@@ -78,25 +76,24 @@ export class ThumbnailService {
7876 } ;
7977
8078 public tryUploadThumbnail = async ( {
81- bufferStream ,
79+ input ,
8280 fileType,
8381 bucket,
8482 fileUuid,
8583 networkFacade,
8684 size,
8785 } : {
88- bufferStream ?: BufferStream ;
86+ input ?: string | Buffer ;
8987 fileType : string ;
9088 bucket : string ;
9189 fileUuid : string ;
9290 networkFacade : NetworkFacade ;
9391 size : number ;
9492 } ) => {
9593 try {
96- const thumbnailBuffer = bufferStream ?. getBuffer ( ) ;
97- if ( thumbnailBuffer && size > 0 ) {
94+ if ( input && size > 0 ) {
9895 await AsyncUtils . withTimeout (
99- ThumbnailService . instance . uploadThumbnail ( thumbnailBuffer , fileType , bucket , fileUuid , networkFacade , size ) ,
96+ ThumbnailService . instance . uploadThumbnail ( input , fileType , bucket , fileUuid , networkFacade , size ) ,
10097 ThumbnailService . MAX_THUMBNAIL_TIMEOUT ,
10198 'Thumbnail upload timeout' ,
10299 ) ;
@@ -105,25 +102,4 @@ export class ThumbnailService {
105102 ErrorUtils . report ( error ) ;
106103 }
107104 } ;
108-
109- public createFileStreamWithBuffer = ( {
110- path,
111- fileType,
112- } : {
113- path : string ;
114- fileType : string ;
115- } ) : {
116- bufferStream ?: BufferStream ;
117- fileStream : Readable ;
118- } => {
119- const readable : Readable = createReadStream ( path ) ;
120- if ( ThumbnailUtils . isFileThumbnailable ( fileType ) ) {
121- const bufferStream = new BufferStream ( ) ;
122- return {
123- bufferStream,
124- fileStream : readable . pipe ( bufferStream ) ,
125- } ;
126- }
127- return { fileStream : readable } ;
128- } ;
129105}
0 commit comments