2025-09-28 18:37:16 -04:00
|
|
|
import { Controller, Delete, Head, Options, Param, Patch, Post, Req, Res } from '@nestjs/common';
|
2025-09-24 13:56:46 -04:00
|
|
|
import { ApiTags } from '@nestjs/swagger';
|
|
|
|
|
import { Request, Response } from 'express';
|
|
|
|
|
import { AuthDto } from 'src/dtos/auth.dto';
|
|
|
|
|
import { Permission } from 'src/enum';
|
|
|
|
|
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
|
|
|
|
import { AssetUploadService } from 'src/services/asset-upload.service';
|
|
|
|
|
import { UUIDParamDto } from 'src/validation';
|
|
|
|
|
|
|
|
|
|
@ApiTags('Upload')
|
|
|
|
|
@Controller('upload')
|
|
|
|
|
export class AssetUploadController {
|
|
|
|
|
constructor(private service: AssetUploadService) {}
|
|
|
|
|
|
2025-09-28 18:37:16 -04:00
|
|
|
@Post()
|
2025-09-24 13:56:46 -04:00
|
|
|
@Authenticated({ sharedLink: true, permission: Permission.AssetUpload })
|
2025-09-28 18:37:16 -04:00
|
|
|
startUpload(@Auth() auth: AuthDto, @Req() request: Request, @Res() response: Response): Promise<void> {
|
|
|
|
|
return this.service.startUpload(auth, request, response);
|
2025-09-24 13:56:46 -04:00
|
|
|
}
|
|
|
|
|
|
2025-09-28 18:37:16 -04:00
|
|
|
@Patch(':id')
|
2025-09-24 13:56:46 -04:00
|
|
|
@Authenticated({ sharedLink: true, permission: Permission.AssetUpload })
|
2025-09-28 18:37:16 -04:00
|
|
|
resumeUpload(
|
2025-09-24 13:56:46 -04:00
|
|
|
@Auth() auth: AuthDto,
|
|
|
|
|
@Param() { id }: UUIDParamDto,
|
|
|
|
|
@Req() request: Request,
|
|
|
|
|
@Res() response: Response,
|
|
|
|
|
): Promise<void> {
|
2025-09-28 18:37:16 -04:00
|
|
|
return this.service.resumeUpload(auth, id, request, response);
|
2025-09-24 13:56:46 -04:00
|
|
|
}
|
|
|
|
|
|
2025-09-28 18:37:16 -04:00
|
|
|
@Delete(':id')
|
|
|
|
|
@Authenticated({ sharedLink: true, permission: Permission.AssetUpload })
|
|
|
|
|
cancelUpload(@Auth() auth: AuthDto, @Param() { id }: UUIDParamDto, @Res() response: Response): Promise<void> {
|
|
|
|
|
return this.service.cancelUpload(auth, id, response);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Options()
|
|
|
|
|
@Authenticated({ sharedLink: true, permission: Permission.AssetUpload })
|
|
|
|
|
getUploadOptions(@Res() response: Response): Promise<void> {
|
|
|
|
|
return this.service.getUploadOptions(response);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Head(':id')
|
2025-09-24 13:56:46 -04:00
|
|
|
@Authenticated({ sharedLink: true, permission: Permission.AssetUpload })
|
|
|
|
|
getUploadStatus(
|
|
|
|
|
@Auth() auth: AuthDto,
|
|
|
|
|
@Param() { id }: UUIDParamDto,
|
|
|
|
|
@Req() request: Request,
|
|
|
|
|
@Res() response: Response,
|
|
|
|
|
): Promise<void> {
|
|
|
|
|
return this.service.getUploadStatus(auth, id, request, response);
|
|
|
|
|
}
|
|
|
|
|
}
|