UNPKG

2.64 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ResponseObjectFactory = void 0;
4const lodash_1 = require("lodash");
5const is_built_in_type_util_1 = require("../utils/is-built-in-type.util");
6const mimetype_content_wrapper_1 = require("./mimetype-content-wrapper");
7const model_properties_accessor_1 = require("./model-properties-accessor");
8const response_object_mapper_1 = require("./response-object-mapper");
9const schema_object_factory_1 = require("./schema-object-factory");
10const swagger_types_mapper_1 = require("./swagger-types-mapper");
11class ResponseObjectFactory {
12 constructor() {
13 this.mimetypeContentWrapper = new mimetype_content_wrapper_1.MimetypeContentWrapper();
14 this.modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor();
15 this.swaggerTypesMapper = new swagger_types_mapper_1.SwaggerTypesMapper();
16 this.schemaObjectFactory = new schema_object_factory_1.SchemaObjectFactory(this.modelPropertiesAccessor, this.swaggerTypesMapper);
17 this.responseObjectMapper = new response_object_mapper_1.ResponseObjectMapper();
18 }
19 create(response, produces, schemas) {
20 const { type, isArray } = response;
21 response = lodash_1.omit(response, ['isArray']);
22 if (!type) {
23 return this.responseObjectMapper.wrapSchemaWithContent(response, produces);
24 }
25 if (is_built_in_type_util_1.isBuiltInType(type)) {
26 const typeName = type && lodash_1.isFunction(type) ? type.name : type;
27 const swaggerType = this.swaggerTypesMapper.mapTypeToOpenAPIType(typeName);
28 if (isArray) {
29 const content = this.mimetypeContentWrapper.wrap(produces, {
30 schema: {
31 type: 'array',
32 items: {
33 type: swaggerType
34 }
35 }
36 });
37 return Object.assign(Object.assign({}, response), content);
38 }
39 const content = this.mimetypeContentWrapper.wrap(produces, {
40 schema: {
41 type: swaggerType
42 }
43 });
44 return Object.assign(Object.assign({}, response), content);
45 }
46 const name = this.schemaObjectFactory.exploreModelSchema(type, schemas);
47 if (isArray) {
48 return this.responseObjectMapper.toArrayRefObject(response, name, produces);
49 }
50 return this.responseObjectMapper.toRefObject(response, name, produces);
51 }
52}
53exports.ResponseObjectFactory = ResponseObjectFactory;