pretty useless upload endpoint
This commit is contained in:
parent
7f523c9606
commit
564f3427a4
@ -1,5 +1,14 @@
|
||||
import { OAuth2AccessToken } from '@icynet/oauth2-provider';
|
||||
import { Controller, Get, UseGuards } from '@nestjs/common';
|
||||
import {
|
||||
Controller,
|
||||
Get,
|
||||
NotFoundException,
|
||||
Param,
|
||||
StreamableFile,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { join } from 'path';
|
||||
import { createReadStream } from 'fs';
|
||||
import { Bearer } from 'src/decorators/bearer.decorator';
|
||||
import { Scope } from 'src/decorators/scope.decorator';
|
||||
import { CurrentUser } from 'src/decorators/user.decorator';
|
||||
@ -9,6 +18,7 @@ import { ConfigurationService } from '../config/config.service';
|
||||
import { OAuth2ClientService } from '../objects/oauth2-client/oauth2-client.service';
|
||||
import { User } from '../objects/user/user.entity';
|
||||
import { FormUtilityService } from '../utility/services/form-utility.service';
|
||||
import { UploadService } from '../objects/upload/upload.service';
|
||||
|
||||
@Controller({
|
||||
path: '/api',
|
||||
@ -18,6 +28,7 @@ export class ApiController {
|
||||
private _config: ConfigurationService,
|
||||
private _oaClient: OAuth2ClientService,
|
||||
private _form: FormUtilityService,
|
||||
private _upload: UploadService,
|
||||
) {}
|
||||
|
||||
@Get('/user')
|
||||
@ -77,4 +88,19 @@ export class ApiController {
|
||||
'verified',
|
||||
]);
|
||||
}
|
||||
|
||||
@Get('/upload/:file')
|
||||
@UseGuards(OAuth2Guard)
|
||||
async sendFile(@Param('file') fileName: string) {
|
||||
const cleanFile = decodeURI(fileName).replace(/(\&(.*))/, '');
|
||||
const file = await this._upload.getByFile(cleanFile);
|
||||
if (!file) {
|
||||
throw new NotFoundException('File not found');
|
||||
}
|
||||
|
||||
const path = join(this._upload.uploadPath, file.file);
|
||||
const stream = createReadStream(path);
|
||||
|
||||
return new StreamableFile(stream);
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,14 @@ export class UploadService {
|
||||
return upload;
|
||||
}
|
||||
|
||||
public async getById(id: number): Promise<Upload> {
|
||||
return this.uploadRepository.findOne({ where: { id } });
|
||||
}
|
||||
|
||||
public async getByFile(file: string): Promise<Upload> {
|
||||
return this.uploadRepository.findOne({ where: { file } });
|
||||
}
|
||||
|
||||
public async checkImageAspect(file: Express.Multer.File): Promise<boolean> {
|
||||
const opened = file.buffer || (await readFile(file.path));
|
||||
return new Promise((resolve) => {
|
||||
|
@ -9,7 +9,7 @@ export class PaginationService {
|
||||
public paginate(options: PageOptions, rowCount: number): PaginationOptions {
|
||||
const paginationOptions: PaginationOptions = {
|
||||
page: parseInt(options.page?.toString(), 10) || 1,
|
||||
pageSize: parseInt(options.pageSize?.toString(), 10) || 50,
|
||||
pageSize: parseInt(options.pageSize?.toString(), 10) || 16,
|
||||
rowCount,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user