Exemplo n.º 1
0
        /// <summary>
        /// Build composite types from definitions
        /// </summary>
        public virtual void BuildCompositeTypes()
        {
            // Load any external references
            foreach (var reference in ServiceDefinition.ExternalReferences)
            {
                string[] splitReference = reference.Split(new[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
                Debug.Assert(splitReference.Length == 2);
                string            filePath           = splitReference[0];
                string            externalDefinition = Settings.FileSystem.ReadFileAsText(filePath);
                ServiceDefinition external           = SwaggerParser.Parse(externalDefinition);
                external.Definitions.ForEach(d => ServiceDefinition.Definitions[d.Key] = d.Value);
            }

            // Build service types and validate allOf
            if (ServiceDefinition.Definitions != null)
            {
                foreach (var schemaName in ServiceDefinition.Definitions.Keys.ToArray())
                {
                    var schema = ServiceDefinition.Definitions[schemaName];
                    schema.GetBuilder(this).BuildServiceType(schemaName);

                    Resolver.ExpandAllOf(schema);
                    var parent = string.IsNullOrEmpty(schema.Extends.StripDefinitionPath())
                        ? null
                        : ServiceDefinition.Definitions[schema.Extends.StripDefinitionPath()];

                    if (parent != null &&
                        !AncestorsHaveProperties(parent.Properties, parent.Extends.StripDefinitionPath()))
                    {
                        throw ErrorManager.CreateError(Resources.InvalidAncestors, schemaName);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public static ServiceDefinition Load(string path, IFileSystem fileSystem)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }

            return(SwaggerParser.Parse(fileSystem.ReadFileAsText(path)));
        }
Exemplo n.º 3
0
        public IEnumerable <ComparisonMessage> Compare(string swaggerPrevious, string swaggerNew, Settings settings = null)
        {
            var oldDefintion = SwaggerParser.Parse(swaggerPrevious);
            var newDefintion = SwaggerParser.Parse(swaggerNew);

            var context = new ComparisonContext(oldDefintion, newDefintion, settings);

            var comparisonMessages = newDefintion.Compare(context, oldDefintion);

            return(comparisonMessages);
        }
Exemplo n.º 4
0
        public IEnumerable <ComparisonMessage> Compare(
            string fileNameOld,
            string swaggerOld,
            string fileNameNew,
            string swaggerNew,
            Settings settings = null
            )
        {
            var oldDefintion = SwaggerParser.Parse(swaggerOld, fileNameOld);
            var newDefintion = SwaggerParser.Parse(swaggerNew, fileNameNew);

            var context = new ComparisonContext <ServiceDefinition>(oldDefintion, newDefintion, settings);

            var comparisonMessages = newDefintion.Typed.Compare(context, oldDefintion.Typed);

            return(comparisonMessages);
        }