File size: 958 Bytes
4327358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { applyDecorators } from '@nestjs/common';
import { ApiExtraModels, ApiResponse, getSchemaPath } from '@nestjs/swagger';
import { Base64File } from '@waha/structures/files.dto';

function getRefSchemaPaths(models) {
  return models.map((model) => {
    return { $ref: getSchemaPath(model) };
  });
}

/**
 * Decorator to add a file accept header to the swagger documentation
 */
export function ApiFileAcceptHeader(mimetype: string, ...models) {
  models = models.length ? models : [Base64File];
  return applyDecorators(
    // Add extra models, otherwise it'll give a error
    // $ref not found
    ApiExtraModels(...models),
    ApiResponse({
      status: 200,
      content: {
        [mimetype]: {
          schema: {
            type: 'string',
            format: 'binary',
          },
        },
        'application/json': {
          schema: {
            oneOf: getRefSchemaPaths(models),
          },
        },
      },
    }),
  );
}