mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { inject, injectable } from 'inversify'
|
|
import { Logger } from 'winston'
|
|
import TYPES from '../../../Bootstrap/Types'
|
|
import { FileDownloaderInterface } from '../../Services/FileDownloaderInterface'
|
|
import { UseCaseInterface } from '../UseCaseInterface'
|
|
import { GetFileMetadataDTO } from './GetFileMetadataDTO'
|
|
import { GetFileMetadataResponse } from './GetFileMetadataResponse'
|
|
|
|
@injectable()
|
|
export class GetFileMetadata implements UseCaseInterface {
|
|
constructor(
|
|
@inject(TYPES.Files_FileDownloader) private fileDownloader: FileDownloaderInterface,
|
|
@inject(TYPES.Files_Logger) private logger: Logger,
|
|
) {}
|
|
|
|
async execute(dto: GetFileMetadataDTO): Promise<GetFileMetadataResponse> {
|
|
try {
|
|
const size = await this.fileDownloader.getFileSize(`${dto.ownerUuid}/${dto.resourceRemoteIdentifier}`)
|
|
|
|
return {
|
|
success: true,
|
|
size,
|
|
}
|
|
} catch (error) {
|
|
this.logger.error(`Could not get file metadata for resource: ${dto.ownerUuid}/${dto.resourceRemoteIdentifier}`)
|
|
return {
|
|
success: false,
|
|
message: 'Could not get file metadata.',
|
|
}
|
|
}
|
|
}
|
|
}
|