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(); }
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(); }
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(); }
public static void WriteList <T>(this IParseNodeWriter writer, string propertyName, IList <T> list, Action <IParseNodeWriter, T> parser) { if (list != null && list.Any()) { writer.WritePropertyName(propertyName); writer.WriteStartList(); foreach (var item in list) { writer.WriteListItem(item, parser); } writer.WriteEndList(); } }
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(); }