mirror of
https://github.com/standardnotes/server
synced 2026-07-14 09:01:33 -04:00
* wip: add files server as a service to home-server * wip: introduce home-server controllers without inversify-express-utils decorators. Move in progress * fix(auth): move remaining home server controllers * fix(syncing-server): home server controllers * fix(revisions): home server controllers * fix: specs * fix: import for legacy controller * fix: remove router debug
40 lines
1.2 KiB
TypeScript
40 lines
1.2 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 { StreamDownloadFileDTO } from './StreamDownloadFileDTO'
|
|
import { StreamDownloadFileResponse } from './StreamDownloadFileResponse'
|
|
|
|
@injectable()
|
|
export class StreamDownloadFile implements UseCaseInterface {
|
|
constructor(
|
|
@inject(TYPES.Files_FileDownloader) private fileDownloader: FileDownloaderInterface,
|
|
@inject(TYPES.Files_Logger) private logger: Logger,
|
|
) {}
|
|
|
|
async execute(dto: StreamDownloadFileDTO): Promise<StreamDownloadFileResponse> {
|
|
try {
|
|
const readStream = await this.fileDownloader.createDownloadStream(
|
|
`${dto.userUuid}/${dto.resourceRemoteIdentifier}`,
|
|
dto.startRange,
|
|
dto.endRange,
|
|
)
|
|
|
|
return {
|
|
success: true,
|
|
readStream,
|
|
}
|
|
} catch (error) {
|
|
this.logger.error(
|
|
`Could not create a download stream for resource: ${dto.userUuid}/${dto.resourceRemoteIdentifier}`,
|
|
)
|
|
|
|
return {
|
|
success: false,
|
|
message: 'Could not create download stream',
|
|
}
|
|
}
|
|
}
|
|
}
|