-
-
Notifications
You must be signed in to change notification settings - Fork 7.4k
/
parse-file-pipe.builder.ts
40 lines (34 loc) 路 1.05 KB
/
parse-file-pipe.builder.ts
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
39
40
import {
FileTypeValidator,
FileTypeValidatorOptions,
} from './file-type.validator';
import { FileValidator } from './file-validator.interface';
import {
MaxFileSizeValidator,
MaxFileSizeValidatorOptions,
} from './max-file-size.validator';
import { ParseFileOptions } from './parse-file-options.interface';
import { ParseFilePipe } from './parse-file.pipe';
export class ParseFilePipeBuilder {
private validators: FileValidator[] = [];
addMaxSizeValidator(options: MaxFileSizeValidatorOptions) {
return this.addValidator(new MaxFileSizeValidator(options));
}
addFileTypeValidator(options: FileTypeValidatorOptions) {
return this.addValidator(new FileTypeValidator(options));
}
addValidator(validator: FileValidator) {
this.validators.push(validator);
return this;
}
build(
additionalOptions?: Omit<ParseFileOptions, 'validators'>,
): ParseFilePipe {
const parseFilePipe = new ParseFilePipe({
...additionalOptions,
validators: this.validators,
});
this.validators = [];
return parseFilePipe;
}
}