Skip to content

Commit 8fcfee0

Browse files
authored
fix: fixed validation of upload file response type, fixed policy of getting file(added necessary preHandlers) (#259)
* fix: fixed validation of upload file response type, fixed policy of getting file(added necessary preHandlers) * fix: removed conflict text, added doc for opt * refactor: eslint fixes * refactor: removed extra space from doc
1 parent 9615a41 commit 8fcfee0

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

src/presentation/http/http-api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ export default class HttpApi implements Api {
252252
fileUploaderService: domainServices.fileUploaderService,
253253
noteService: domainServices.noteService,
254254
fileSizeLimit: this.config.fileSizeLimit,
255+
noteSettingsService: domainServices.noteSettingsService,
255256
});
256257
}
257258

src/presentation/http/router/upload.ts

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import type NoteService from '@domain/service/note.js';
55
import useNoteResolver from '../middlewares/note/useNoteResolver.js';
66
import type { NoteAttachmentFileLocation } from '@domain/entities/file.js';
77
import { StatusCodes } from 'http-status-codes';
8+
import useNoteSettingsResolver from '../middlewares/noteSettings/useNoteSettingsResolver.js';
9+
import type NoteSettingsService from '@domain/service/noteSettings.js';
10+
import useMemberRoleResolver from '../middlewares/noteSettings/useMemberRoleResolver.js';
811

912
/**
1013
* Interface for upload router options
@@ -20,6 +23,11 @@ interface UploadRouterOptions {
2023
*/
2124
noteService: NoteService;
2225

26+
/**
27+
* Note settings service instance
28+
*/
29+
noteSettingsService: NoteSettingsService;
30+
2331
/**
2432
* Limit for uploaded files size
2533
*/
@@ -35,6 +43,18 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
3543
*/
3644
const { noteResolver } = useNoteResolver(opts.noteService);
3745

46+
/**
47+
* Prepare note settings resolver middleware
48+
* It should be used to use note settings in middlewares
49+
*/
50+
const { noteSettingsResolver } = useNoteSettingsResolver(opts.noteSettingsService);
51+
52+
/**
53+
* Prepare user role resolver middleware
54+
* It should be used to use user role in middlewares
55+
*/
56+
const { memberRoleResolver } = useMemberRoleResolver(opts.noteSettingsService);
57+
3858
await fastify.register(fastifyMultipart, {
3959
limits: {
4060
fieldSize: opts.fileSizeLimit,
@@ -74,14 +94,20 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
7494
'2xx': {
7595
type: 'object',
7696
description: 'File key to get it from the API',
77-
key: {
78-
$ref: 'UploadSchema#/properties/key',
97+
properties: {
98+
key: {
99+
$ref: 'UploadSchema#/properties/key',
100+
},
79101
},
80102
},
81103
},
82104
},
83105
attachValidation: true,
84-
preHandler: [noteResolver],
106+
preHandler: [
107+
noteResolver,
108+
noteSettingsResolver,
109+
memberRoleResolver,
110+
],
85111
}, async (request, reply) => {
86112
/**
87113
* @todo solve trouble with crashing app, when validations is not passed
@@ -128,7 +154,6 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
128154
$ref: 'UploadSchema#/properties/key',
129155
},
130156
},
131-
132157
response: {
133158
'2xx': {
134159
description: 'Generated buffer',
@@ -138,7 +163,11 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
138163
},
139164
},
140165
},
141-
preHandler: [noteResolver],
166+
preHandler: [
167+
noteResolver,
168+
noteSettingsResolver,
169+
memberRoleResolver,
170+
],
142171
}, async (request, reply) => {
143172
const fileLocation: NoteAttachmentFileLocation = {
144173
noteId: request.note!.id,

0 commit comments

Comments
 (0)