refactor(server): download file (#1512)

* refactor(server): download file

* chore: generate open-api and remove unused refs

* chore(server): tests

* chore: remove unused code
This commit is contained in:
Jason Rasmussen
2023-02-03 10:16:25 -05:00
committed by GitHub
parent e39507552f
commit 2b0b2bb1ae
29 changed files with 210 additions and 291 deletions

View File

@@ -4,6 +4,7 @@ import {
IJobRepository,
IKeyRepository,
ISharedLinkRepository,
IStorageRepository,
ISystemConfigRepository,
IUserRepository,
QueueName,
@@ -29,6 +30,7 @@ import {
UserTokenEntity,
} from './db';
import { JobRepository } from './job';
import { FilesystemProvider } from './storage';
const providers: Provider[] = [
{ provide: ICryptoRepository, useClass: CryptoRepository },
@@ -36,6 +38,7 @@ const providers: Provider[] = [
{ provide: IKeyRepository, useClass: APIKeyRepository },
{ provide: IJobRepository, useClass: JobRepository },
{ provide: ISharedLinkRepository, useClass: SharedLinkRepository },
{ provide: IStorageRepository, useClass: FilesystemProvider },
{ provide: ISystemConfigRepository, useClass: SystemConfigRepository },
{ provide: IUserRepository, useClass: UserRepository },
{ provide: IUserTokenRepository, useClass: UserTokenRepository },

View File

@@ -0,0 +1,18 @@
import { ImmichReadStream, IStorageRepository } from '@app/domain';
import { constants, createReadStream, stat } from 'fs';
import fs from 'fs/promises';
import { promisify } from 'util';
const fileInfo = promisify(stat);
export class FilesystemProvider implements IStorageRepository {
async createReadStream(filepath: string, mimeType: string): Promise<ImmichReadStream> {
const { size } = await fileInfo(filepath);
await fs.access(filepath, constants.R_OK | constants.W_OK);
return {
stream: createReadStream(filepath),
length: size,
type: mimeType,
};
}
}

View File

@@ -0,0 +1 @@
export * from './filesystem.provider';