|
1 | 1 | import { Controller, Get, Logger, Param, Res } from '@nestjs/common'; |
2 | 2 | import { Response } from 'express'; |
3 | 3 | import { ApiOkResponse, ApiTags } from '@nestjs/swagger'; |
4 | | -import { isHddStaticServiceConfigured, isS3ServiceConfigured } from './utils'; |
5 | | -import { GetObjectCommand, S3Client } from '@aws-sdk/client-s3'; |
6 | | -import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; |
| 4 | +import { StaticService } from './static.service'; |
7 | 5 |
|
8 | 6 | @ApiTags('images') |
9 | 7 | @Controller('images') |
10 | 8 | export class StaticController { |
11 | 9 | private readonly logger: Logger = new Logger(StaticController.name); |
| 10 | + constructor(private staticService: StaticService) {} |
12 | 11 |
|
13 | 12 | @Get('/:fileName') |
14 | 13 | @ApiOkResponse() |
15 | 14 | async getUrlAndRedirect(@Param('fileName') fileName: string, @Res() res: Response) { |
16 | 15 | try { |
17 | | - if (isHddStaticServiceConfigured()) { |
18 | | - res.redirect('/' + fileName); |
19 | | - } |
20 | | - if (isS3ServiceConfigured()) { |
21 | | - const AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID; |
22 | | - const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY; |
23 | | - const AWS_REGION = process.env.AWS_REGION; |
24 | | - const AWS_S3_BUCKET_NAME = process.env.AWS_S3_BUCKET_NAME; |
25 | | - |
26 | | - const s3Client = new S3Client({ |
27 | | - credentials: { |
28 | | - accessKeyId: `${AWS_ACCESS_KEY_ID}`, |
29 | | - secretAccessKey: `${AWS_SECRET_ACCESS_KEY}`, |
30 | | - }, |
31 | | - region: `${AWS_REGION}`, |
32 | | - }); |
33 | | - const command = new GetObjectCommand({ |
34 | | - Bucket: `${AWS_S3_BUCKET_NAME}`, |
35 | | - Key: fileName, |
36 | | - }); |
37 | | - res.redirect(await getSignedUrl(s3Client, command, { expiresIn: 3600 })); |
38 | | - } |
| 16 | + const url = await this.staticService.getImageUrl(fileName); |
| 17 | + res.redirect(url); |
39 | 18 | } catch (error) { |
40 | 19 | this.logger.error('Error fetching file from S3:' + fileName, error); |
41 | 20 | res.status(500).send('Error occurred while getting the file.'); |
|
0 commit comments