open-api-mocker
Version:
A mock server based in Open API Specification
46 lines (31 loc) • 797 B
JavaScript
;
const Tag = require('./tag');
const TagsStruct = require('./structs');
const extractExtensions = require('../utils/extract-extensions');
const enhanceStructValidationError = require('../utils/enhance-struct-validation-error');
class Parser {
parse(schema) {
const { tags } = schema;
this.validateTags(tags);
if(!tags || !tags.length)
return [];
return tags
.map(this.parseTag.bind(this));
}
validateTags(tags) {
try {
return TagsStruct(tags);
} catch(e) {
throw enhanceStructValidationError(e, 'tags');
}
}
parseTag({ name, description, externalDocs, ...otherProps }) {
const extensionProps = extractExtensions(otherProps);
return new Tag({
name,
description,
externalDocs
}, extensionProps);
}
}
module.exports = Parser;