private string Render()

in src/Microsoft.Azure.WebJobs.Extensions.OpenApi/Document.cs [221:281]


        private string Render(OpenApiSpecVersion version, OpenApiFormat format)
        {
            //var serialised = default(string);
            //using (var sw = new StringWriter())
            //{
            //    this.OpenApiDocument.Serialise(sw, version, format);
            //    serialised = sw.ToString();
            //}

            //return serialised;

            // This is the interim solution to resolve:
            // https://github.com/Azure/azure-functions-openapi-extension/issues/365
            //
            // It will be removed when the following issue is resolved:
            // https://github.com/microsoft/OpenAPI.NET/issues/747
            var jserialised = default(string);
            using (var sw = new StringWriter())
            {
                this.OpenApiDocument.Serialise(sw, version, OpenApiFormat.Json);
                jserialised = sw.ToString();
            }

            var yserialised = default(string);
            using (var sw = new StringWriter())
            {
                this.OpenApiDocument.Serialise(sw, version, OpenApiFormat.Yaml);
                yserialised = sw.ToString();
            }

            if (version != OpenApiSpecVersion.OpenApi2_0)
            {
                return format == OpenApiFormat.Json ? jserialised : yserialised;
            }

            var jo = JsonConvert.DeserializeObject<JObject>(jserialised);
            var jts = jo.DescendantsAndSelf()
                        .Where(p => p.Type == JTokenType.Property && (p as JProperty).Name == "parameters")
                        .SelectMany(p => p.Values<JArray>().SelectMany(q => q.Children<JObject>()))
                        .Where(p => p.Value<string>("in") == null)
                        .Where(p => p.Value<string>("description") != null)
                        .Where(p => p.Value<string>("description").Contains("[formData]"))
                        .ToList();
            foreach (var jt in jts)
            {
                jt["in"] = "formData";
                jt["description"] = jt.Value<string>("description").Replace("[formData]", string.Empty);
            }

            var serialised = JsonConvert.SerializeObject(jo, Formatting.Indented);
            if (format == OpenApiFormat.Json)
            {
                return serialised;
            }

            var converter = new ExpandoObjectConverter();
            var deserialised = JsonConvert.DeserializeObject<ExpandoObject>(serialised, converter);
            serialised = new SerializerBuilder().Build().Serialize(deserialised);

            return serialised;
        }