Skip to content

Commit 20aa037

Browse files
authored
[AB-290]-Extracting-type-information from OAS (#834)
- AB-290-extracting-type-information
1 parent d092f0f commit 20aa037

9 files changed

+619
-51
lines changed

Diff for: index.js

+11
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ module.exports = {
2828
return cb(new UserError(_.get(schema, 'validationResult.reason', DEFAULT_INVALID_ERROR)));
2929
},
3030

31+
convertV2WithTypes: function(input, options, cb) {
32+
const enableTypeFetching = true;
33+
var schema = new SchemaPack(input, options, MODULE_VERSION.V2, enableTypeFetching);
34+
35+
if (schema.validated) {
36+
return schema.convertV2(cb);
37+
}
38+
39+
return cb(new UserError(_.get(schema, 'validationResult.reason', DEFAULT_INVALID_ERROR)));
40+
},
41+
3142
validate: function (input) {
3243
var schema = new SchemaPack(input);
3344
return schema.validationResult;

Diff for: lib/schemapack.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ let path = require('path'),
3838
pathBrowserify = require('path-browserify');
3939

4040
class SchemaPack {
41-
constructor (input, options = {}, moduleVersion = MODULE_VERSION.V1) {
41+
constructor (input, options = {}, moduleVersion = MODULE_VERSION.V1, enableTypeFetching = false) {
4242
if (input.type === schemaUtils.MULTI_FILE_API_TYPE_ALLOWED_VALUE &&
4343
input.data && input.data[0] && input.data[0].path) {
4444
input = schemaUtils.mapDetectRootFilesInputToFolderInput(input);
@@ -57,7 +57,7 @@ class SchemaPack {
5757
actualStack: 0,
5858
numberOfRequests: 0
5959
};
60-
60+
this.enableTypeFetching = enableTypeFetching;
6161
this.computedOptions = utils.mergeOptions(
6262
// predefined options
6363
_.keyBy(this.definedOptions, 'id'),

Diff for: libV2/index.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ module.exports = {
3232

3333
let preOrderTraversal = GraphLib.alg.preorder(collectionTree, 'root:collection');
3434

35-
let collection = {};
35+
let collection = {},
36+
extractedTypesObject = {};
3637

3738
/**
3839
* individually start generating the folder, request, collection
@@ -91,16 +92,19 @@ module.exports = {
9192
// generate the request form the node
9293
let request = {},
9394
collectionVariables = [],
94-
requestObject = {};
95+
requestObject = {},
96+
requestTypesObject = {};
9597

9698
try {
97-
({ request, collectionVariables } = resolvePostmanRequest(context,
99+
({ request, collectionVariables, requestTypesObject } = resolvePostmanRequest(context,
98100
context.openapi.paths[node.meta.path],
99101
node.meta.path,
100102
node.meta.method
101103
));
102104

103105
requestObject = generateRequestItemObject(request);
106+
extractedTypesObject = Object.assign({}, extractedTypesObject, requestTypesObject);
107+
104108
}
105109
catch (error) {
106110
console.error(error);
@@ -217,7 +221,17 @@ module.exports = {
217221
if (!_.isEmpty(collection.variable)) {
218222
collection.variable = _.uniqBy(collection.variable, 'key');
219223
}
220-
224+
if (context.enableTypeFetching) {
225+
return cb(null, {
226+
result: true,
227+
output: [{
228+
type: 'collection',
229+
data: collection
230+
}],
231+
analytics: this.analytics || {},
232+
extractedTypes: extractedTypesObject || {}
233+
});
234+
}
221235
return cb(null, {
222236
result: true,
223237
output: [{

0 commit comments

Comments
 (0)