GetFileMetadata.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import { inject, injectable } from 'inversify'
  2. import { Logger } from 'winston'
  3. import TYPES from '../../../Bootstrap/Types'
  4. import { FileDownloaderInterface } from '../../Services/FileDownloaderInterface'
  5. import { UseCaseInterface } from '../UseCaseInterface'
  6. import { GetFileMetadataDTO } from './GetFileMetadataDTO'
  7. import { GetFileMetadataResponse } from './GetFileMetadataResponse'
  8. @injectable()
  9. export class GetFileMetadata implements UseCaseInterface {
  10. constructor(
  11. @inject(TYPES.Files_FileDownloader) private fileDownloader: FileDownloaderInterface,
  12. @inject(TYPES.Files_Logger) private logger: Logger,
  13. ) {}
  14. async execute(dto: GetFileMetadataDTO): Promise<GetFileMetadataResponse> {
  15. try {
  16. const size = await this.fileDownloader.getFileSize(`${dto.userUuid}/${dto.resourceRemoteIdentifier}`)
  17. return {
  18. success: true,
  19. size,
  20. }
  21. } catch (error) {
  22. this.logger.error(`Could not get file metadata for resource: ${dto.userUuid}/${dto.resourceRemoteIdentifier}`)
  23. return {
  24. success: false,
  25. message: 'Could not get file metadata.',
  26. }
  27. }
  28. }
  29. }