From 0e7845e38fe5611e72dc8b7c79aeb0efbae25073 Mon Sep 17 00:00:00 2001 From: David Mehren Date: Fri, 30 Oct 2020 22:35:57 +0100 Subject: [PATCH] Get port and upload path from config Signed-off-by: David Mehren Co-authored-by: Yannick Bungers --- src/main.ts | 17 +++++++++++------ src/media/backends/filesystem-backend.ts | 10 ++++++++-- src/media/media.module.ts | 2 ++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main.ts b/src/main.ts index d0b246742..a50657fbc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,10 +5,12 @@ */ import { ValidationPipe } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { NestFactory } from '@nestjs/core'; import { NestExpressApplication } from '@nestjs/platform-express'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { AppModule } from './app.module'; +import { AppConfig } from './config/app.config'; import { NestConsoleLoggerService } from './logger/nest-console-logger.service'; async function bootstrap() { @@ -16,6 +18,8 @@ async function bootstrap() { const logger = await app.resolve(NestConsoleLoggerService); logger.log('Switching logger', 'AppBootstrap'); app.useLogger(logger); + const configService = app.get(ConfigService); + const appConfig = configService.get('appConfig'); const swaggerOptions = new DocumentBuilder() .setTitle('HedgeDoc') @@ -31,12 +35,13 @@ async function bootstrap() { transform: true, }), ); - // TODO: Get uploads directory from config - app.useStaticAssets('uploads', { - prefix: '/uploads', - }); - await app.listen(3000); - logger.log('Listening on port 3000', 'AppBootstrap'); + if (appConfig.media.backend.use === 'filesystem') { + app.useStaticAssets('uploads', { + prefix: appConfig.media.backend.filesystem.uploadPath, + }); + } + await app.listen(appConfig.port); + logger.log(`Listening on port ${appConfig.port}`, 'AppBootstrap'); } bootstrap(); diff --git a/src/media/backends/filesystem-backend.ts b/src/media/backends/filesystem-backend.ts index efaa29a7a..34093a273 100644 --- a/src/media/backends/filesystem-backend.ts +++ b/src/media/backends/filesystem-backend.ts @@ -5,6 +5,7 @@ */ import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { promises as fs } from 'fs'; import { join } from 'path'; import { ConsoleLoggerService } from '../../logger/console-logger.service'; @@ -13,11 +14,16 @@ import { BackendData } from '../media-upload.entity'; @Injectable() export class FilesystemBackend implements MediaBackend { - // TODO: Get uploads directory from config uploadDirectory = './uploads'; - constructor(private readonly logger: ConsoleLoggerService) { + constructor( + private readonly logger: ConsoleLoggerService, + private configService: ConfigService, + ) { this.logger.setContext(FilesystemBackend.name); + this.uploadDirectory = configService.get( + 'media.backend.filesystem.uploadPath', + ); } private getFilePath(fileName: string): string { diff --git a/src/media/media.module.ts b/src/media/media.module.ts index 00b70209a..d55be0843 100644 --- a/src/media/media.module.ts +++ b/src/media/media.module.ts @@ -5,6 +5,7 @@ */ import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { LoggerModule } from '../logger/logger.module'; import { NotesModule } from '../notes/notes.module'; @@ -19,6 +20,7 @@ import { MediaService } from './media.service'; NotesModule, UsersModule, LoggerModule, + ConfigModule, ], providers: [MediaService, FilesystemBackend], exports: [MediaService],