Example #1
0
        public static void WriteOperation(IParseNodeWriter writer, Operation operation)
        {
            writer.WriteStartMap();
            writer.WriteList("tags", operation.Tags, Tag.WriteRef);
            writer.WriteStringProperty("summary", operation.Summary);
            writer.WriteStringProperty("description", operation.Description);
            writer.WriteObject("externalDocs", operation.ExternalDocs, WriteExternalDocs);

            writer.WriteStringProperty("operationId", operation.OperationId);

            var parameters = new List <Parameter>(operation.Parameters);

            Parameter bodyParameter = null;

            if (operation.RequestBody != null)
            {
                writer.WritePropertyName("consumes");
                writer.WriteStartList();
                var consumes = operation.RequestBody.Content.Keys.Distinct();
                foreach (var mediaType in consumes)
                {
                    writer.WriteListItem(mediaType, (w, s) => w.WriteValue(s));
                }
                writer.WriteEndList();

                // Create bodyParameter
                bodyParameter = new BodyParameter()
                {
                    Name        = "body",
                    Description = operation.RequestBody.Description,
                    Schema      = operation.RequestBody.Content.First().Value.Schema
                };
                // add to parameters
                parameters.Add(bodyParameter);
            }

            var produces = operation.Responses.Where(r => r.Value.Content != null).SelectMany(r => r.Value.Content?.Keys).Distinct();

            if (produces.Count() > 0)
            {
                writer.WritePropertyName("produces");
                writer.WriteStartList();
                foreach (var mediaType in produces)
                {
                    writer.WriteListItem(mediaType, (w, s) => w.WriteValue(s));
                }
                writer.WriteEndList();
            }

            writer.WriteList <Parameter>("parameters", parameters, WriteParameterOrReference);
            writer.WriteMap <Response>("responses", operation.Responses, WriteResponseOrReference);
            writer.WriteBoolProperty("deprecated", operation.Deprecated, Operation.DeprecatedDefault);
            writer.WriteList("security", operation.Security, WriteSecurityRequirement);
            writer.WriteExtensions(operation.Extensions);

            writer.WriteEndMap();
        }
Example #2
0
        public override void Write(IParseNodeWriter writer)
        {
            if (nodeList == null || !nodeList.Children.Any())
            {
                return;
            }

            writer.WriteStartList();

            if (!(nodeList.Children.First() is YamlScalarNode scalarNode))
            {
                return;
            }

            bool stringFormat = scalarNode.Style == ScalarStyle.SingleQuoted ||
                                scalarNode.Style == ScalarStyle.DoubleQuoted;

            var items = nodeList.Children.Select(x => (x as YamlScalarNode).Value).ToList();

            items.ForEach(s =>
            {
                if (stringFormat)
                {
                    writer.WriteListItem(s, (nodeWriter, item) => nodeWriter.WriteValue(item));
                }
                else
                {
                    writer.WriteListItem((object)s, (nodeWriter, item) => nodeWriter.WriteValue(item));
                }
            });

            writer.WriteEndList();
        }
Example #3
0
        public static void WritePathItem(IParseNodeWriter writer, PathItem pathItem)
        {
            writer.WriteStartMap();
            writer.WriteStringProperty("summary", pathItem.Summary);
            writer.WriteStringProperty("description", pathItem.Description);
            if (pathItem.Parameters != null && pathItem.Parameters.Count > 0)
            {
                writer.WritePropertyName("parameters");
                writer.WriteStartList();
                foreach (var parameter in pathItem.Parameters)
                {
                    WriteParameter(writer, parameter);
                }
                writer.WriteEndList();
            }
            writer.WriteList("servers", pathItem.Servers, WriteServer);

            foreach (var operationPair in pathItem.Operations)
            {
                writer.WritePropertyName(operationPair.Key);
                WriteOperation(writer, operationPair.Value);
            }
            writer.WriteExtensions(pathItem.Extensions);

            writer.WriteEndMap();
        }
Example #4
0
 public static void WriteList <T>(this IParseNodeWriter writer, string propertyName, IList <T> list, Action <IParseNodeWriter, T> parser)
 {
     if (list != null && list.Count() > 0)
     {
         writer.WritePropertyName(propertyName);
         foreach (var item in list)
         {
             writer.WriteStartList();
             parser(writer, item);
             writer.WriteEndList();
         }
     }
 }
Example #5
0
        public static void WriteSecurityRequirement(IParseNodeWriter writer, SecurityRequirement securityRequirement)
        {
            writer.WriteStartMap();

            foreach (var scheme in securityRequirement.Schemes)
            {
                writer.WritePropertyName(scheme.Key.Pointer.TypeName);
                writer.WriteStartList();

                foreach (var scope in scheme.Value)
                {
                    writer.WriteValue(scope);
                }

                writer.WriteEndList();
            }

            writer.WriteEndMap();
        }
Example #6
0
        public override void Write(IParseNodeWriter writer)
        {
            if (nodeList == null || !nodeList.Children.Any())
            {
                return;
            }

            writer.WriteStartList();

            YamlNode yamlNode = nodeList.Children.First();

            if (yamlNode is YamlScalarNode)
            {
                YamlScalarNode scalarNode = (YamlScalarNode)yamlNode;

                bool stringFormat = scalarNode.Style == ScalarStyle.SingleQuoted ||
                                    scalarNode.Style == ScalarStyle.DoubleQuoted;

                var items = nodeList.Children.Select(x => (x as YamlScalarNode).Value).ToList();
                items.ForEach(s =>
                {
                    if (stringFormat)
                    {
                        writer.WriteListItem(s, (nodeWriter, item) => nodeWriter.WriteValue(item));
                    }
                    else
                    {
                        writer.WriteListItem((object)s, (nodeWriter, item) => nodeWriter.WriteValue(item));
                    }
                });
            }
            else if (yamlNode is YamlSequenceNode || yamlNode is YamlMappingNode)
            {
                var items = nodeList.Children.ToList();
                items.ForEach(x =>
                {
                    writer.WriteListItem(x,
                                         (nodeWriter, item) => new AnyNode(Create(new ParsingContext(), x)).Write(nodeWriter));
                });
            }

            writer.WriteEndList();
        }
Example #7
0
        void IModel.Write(IParseNodeWriter writer)
        {
            writer.WriteStartMap();

            if (Enum.Count > 0)
            {
                writer.WritePropertyName("enum");
                writer.WriteStartList();
                foreach (var enumItem in Enum)
                {
                    writer.WriteValue(enumItem);
                }
                writer.WriteEndList();
            }
            writer.WriteStringProperty("default", Default);
            writer.WriteStringProperty("description", Description);

            writer.WriteEndMap();
        }
Example #8
0
        private static void WriteHostInfo(IParseNodeWriter writer, IList <Server> servers)
        {
            if (servers == null || servers.Count == 0)
            {
                return;
            }
            var firstServer = servers.First();
            var url         = new Uri(firstServer.Url);

            writer.WriteStringProperty("host", url.GetComponents(UriComponents.Host | UriComponents.Port, UriFormat.SafeUnescaped));
            writer.WriteStringProperty("basePath", url.AbsolutePath);
            var schemes = servers.Select(s => new Uri(s.Url).Scheme).Distinct();

            writer.WritePropertyName("schemes");
            writer.WriteStartList();
            foreach (var scheme in schemes)
            {
                writer.WriteListItem(scheme, (w, s) => w.WriteValue(s));
            }
            writer.WriteEndList();
        }
Example #9
0
        public void Write(IParseNodeWriter writer)
        {
            writer.WriteStartMap();
            writer.WriteStringProperty("summary", Summary);
            writer.WriteStringProperty("description", Description);
            if (Parameters != null && Parameters.Count > 0)
            {
                writer.WritePropertyName("parameters");
                writer.WriteStartList();
                foreach (var parameter in this.Parameters)
                {
                    ModelHelper.Write(writer, parameter);
                }
                writer.WriteEndList();
            }
            writer.WriteList("servers", Servers, ModelHelper.Write);

            foreach (var operationPair in Operations)
            {
                writer.WritePropertyName(operationPair.Key);
                ModelHelper.Write(writer, operationPair.Value);
            }
            writer.WriteEndMap();
        }
        void IModel.Write(IParseNodeWriter writer)
        {
            writer.WriteStartMap();

            foreach (var scheme in Schemes)
            {
                writer.WritePropertyName(scheme.Key.Pointer.TypeName);
                if (scheme.Value.Count > 0)
                {
                    writer.WriteStartList();
                    foreach (var scope in scheme.Value)
                    {
                        writer.WriteValue(scope);
                    }
                    writer.WriteEndList();
                }
                else
                {
                    writer.WriteValue("[]");
                }
            }

            writer.WriteEndMap();
        }
Example #11
0
        void IModel.Write(IParseNodeWriter writer)
        {
            writer.WriteStartMap();

            writer.WriteStringProperty("title", Title);
            writer.WriteStringProperty("type", Type);
            writer.WriteStringProperty("format", Format);
            writer.WriteStringProperty("description", Description);

            writer.WriteNumberProperty("maxLength", MaxLength);
            writer.WriteNumberProperty("minLength", MinLength);
            writer.WriteStringProperty("pattern", Pattern);
            writer.WriteStringProperty("default", Default);

            if (Required != null && Required.Length > 0)
            {
                writer.WritePropertyName("required");
                writer.WriteStartList();
                foreach (var name in Required)
                {
                    writer.WriteValue(name);
                }
                writer.WriteEndList();
            }

            writer.WriteNumberProperty("maximum", Maximum);
            writer.WriteBoolProperty("exclusiveMaximum", ExclusiveMaximum, false);
            writer.WriteNumberProperty("minimum", Minimum);
            writer.WriteBoolProperty("exclusiveMinimum", ExclusiveMinimum, false);

            if (Items != null)
            {
                writer.WritePropertyName("items");
                ModelHelper.Write(writer, Items);
            }
            writer.WriteNumberProperty("maxItems", MaxItems);
            writer.WriteNumberProperty("minItems", MinItems);

            if (Properties != null)
            {
                writer.WritePropertyName("properties");
                writer.WriteStartMap();
                foreach (var prop in Properties)
                {
                    writer.WritePropertyName(prop.Key);
                    if (prop.Value != null)
                    {
                        ModelHelper.Write(writer, prop.Value);
                    }
                    else
                    {
                        writer.WriteValue("null");
                    }
                }
                writer.WriteEndMap();
            }
            writer.WriteNumberProperty("maxProperties", MaxProperties);
            writer.WriteNumberProperty("minProperties", MinProperties);



            if (Enum.Count > 0)
            {
                writer.WritePropertyName("enum");
                writer.WriteStartList();
                foreach (var item in Enum)
                {
                    writer.WriteValue(item);
                }
                writer.WriteEndList();
            }
            writer.WriteEndMap();
        }