Skip to content

Commit 35045ae

Browse files
committed
Clean up code and update API interface
1 parent 6011cba commit 35045ae

File tree

4 files changed

+27
-33
lines changed

4 files changed

+27
-33
lines changed

src/Microsoft.OpenApi/Extensions/JsonSchemaBuilderExtensions.cs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System;
@@ -112,25 +112,6 @@ public static JsonSchemaBuilder OpenApiExternalDocs(this JsonSchemaBuilder build
112112
return builder;
113113
}
114114

115-
/// <summary>
116-
/// Removes a keyword from the builder instance
117-
/// </summary>
118-
/// <param name="builder"></param>
119-
/// <param name="keyWord"></param>
120-
/// <returns></returns>
121-
public static JsonSchemaBuilder RemoveKeyWord(this JsonSchemaBuilder builder, IJsonSchemaKeyword keyWord)
122-
{
123-
var schema = builder.Build();
124-
var newKeyWords = new List<IJsonSchemaKeyword>();
125-
newKeyWords = schema.Keywords.Where(x => !x.Equals(keyWord)).ToList();
126-
foreach (var item in newKeyWords)
127-
{
128-
builder.Add(item);
129-
}
130-
131-
return builder;
132-
}
133-
134115
/// <summary>
135116
/// Removes a keyword
136117
/// </summary>
@@ -153,7 +134,6 @@ public static JsonSchemaBuilder Remove(this JsonSchemaBuilder builder, string ke
153134
}
154135
}
155136

156-
//_keywords.Remove(keyword);
157137
return schemaBuilder;
158138
}
159139
}

src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ internal OpenApiBodyParameter ConvertToBodyParameter()
185185
// V2 spec actually allows the body to have custom name.
186186
// To allow round-tripping we use an extension to hold the name
187187
Name = "body",
188-
Schema = Content.Values.FirstOrDefault()?.Schema ?? new OpenApiSchema(),
188+
Schema = Content.Values.FirstOrDefault()?.Schema ?? new JsonSchemaBuilder(),
189189
Required = Required,
190190
Extensions = Extensions.ToDictionary(static k => k.Key, static v => v.Value) // Clone extensions so we can remove the x-bodyName extensions from the output V2 model.
191191
};
@@ -219,7 +219,7 @@ internal IEnumerable<OpenApiFormDataParameter> ConvertToFormDataParameters()
219219
Description = property.Value.GetDescription(),
220220
Name = property.Key,
221221
Schema = property.Value,
222-
Required = Content.First().Value.Schema.Required.Contains(property.Key)
222+
Required = Content.First().Value.Schema.GetRequired().Contains(property.Key)
223223
};
224224
}
225225
}

test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,14 @@ namespace Microsoft.OpenApi.Extensions
166166
public const string Name = "extensions";
167167
public void Evaluate(Json.Schema.EvaluationContext context) { }
168168
}
169+
[Json.Schema.SchemaKeyword("externalDocs")]
170+
public class ExternalDocsKeyword : Json.Schema.IJsonSchemaKeyword
171+
{
172+
public const string Name = "externalDocs";
173+
public ExternalDocsKeyword(Microsoft.OpenApi.Models.OpenApiExternalDocs value) { }
174+
public Microsoft.OpenApi.Models.OpenApiExternalDocs Value { get; }
175+
public void Evaluate(Json.Schema.EvaluationContext context) { }
176+
}
169177
public static class JsonSchemaBuilderExtensions
170178
{
171179
public static Json.Schema.JsonSchemaBuilder AdditionalPropertiesAllowed(this Json.Schema.JsonSchemaBuilder builder, bool additionalPropertiesAllowed) { }
@@ -174,6 +182,8 @@ namespace Microsoft.OpenApi.Extensions
174182
public static Json.Schema.JsonSchemaBuilder ExclusiveMinimum(this Json.Schema.JsonSchemaBuilder builder, bool value) { }
175183
public static Json.Schema.JsonSchemaBuilder Extensions(this Json.Schema.JsonSchemaBuilder builder, System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Interfaces.IOpenApiExtension> extensions) { }
176184
public static Json.Schema.JsonSchemaBuilder Nullable(this Json.Schema.JsonSchemaBuilder builder, bool value) { }
185+
public static Json.Schema.JsonSchemaBuilder OpenApiExternalDocs(this Json.Schema.JsonSchemaBuilder builder, Microsoft.OpenApi.Models.OpenApiExternalDocs externalDocs) { }
186+
public static Json.Schema.JsonSchemaBuilder Remove(this Json.Schema.JsonSchemaBuilder builder, string keyword) { }
177187
public static Json.Schema.JsonSchemaBuilder Summary(this Json.Schema.JsonSchemaBuilder builder, string summary) { }
178188
}
179189
public static class JsonSchemaExtensions
@@ -184,6 +194,7 @@ namespace Microsoft.OpenApi.Extensions
184194
public static Microsoft.OpenApi.Extensions.DiscriminatorKeyword GetOpenApiDiscriminator(this Json.Schema.JsonSchema schema) { }
185195
public static bool? GetOpenApiExclusiveMaximum(this Json.Schema.JsonSchema schema) { }
186196
public static bool? GetOpenApiExclusiveMinimum(this Json.Schema.JsonSchema schema) { }
197+
public static Microsoft.OpenApi.Models.OpenApiExternalDocs GetOpenApiExternalDocs(this Json.Schema.JsonSchema schema) { }
187198
public static string GetSummary(this Json.Schema.JsonSchema schema) { }
188199
}
189200
[Json.Schema.SchemaKeyword("nullable")]
@@ -299,7 +310,7 @@ namespace Microsoft.OpenApi.MicrosoftExtensions
299310
public class EnumDescription : Microsoft.OpenApi.Interfaces.IOpenApiElement
300311
{
301312
public EnumDescription() { }
302-
public EnumDescription(Microsoft.OpenApi.Any.OpenApiObject source) { }
313+
public EnumDescription(System.Text.Json.Nodes.JsonObject source) { }
303314
public string Description { get; set; }
304315
public string Name { get; set; }
305316
public string Value { get; set; }
@@ -313,15 +324,15 @@ namespace Microsoft.OpenApi.MicrosoftExtensions
313324
public string Version { get; set; }
314325
public static string Name { get; }
315326
public void Write(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.OpenApiSpecVersion specVersion) { }
316-
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiDeprecationExtension Parse(Microsoft.OpenApi.Any.IOpenApiAny source) { }
327+
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiDeprecationExtension Parse(Microsoft.OpenApi.Any.OpenApiAny source) { }
317328
}
318329
public class OpenApiEnumFlagsExtension : Microsoft.OpenApi.Interfaces.IOpenApiExtension
319330
{
320331
public OpenApiEnumFlagsExtension() { }
321332
public bool IsFlags { get; set; }
322333
public static string Name { get; }
323334
public void Write(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.OpenApiSpecVersion specVersion) { }
324-
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiEnumFlagsExtension Parse(Microsoft.OpenApi.Any.IOpenApiAny source) { }
335+
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiEnumFlagsExtension Parse(Microsoft.OpenApi.Any.OpenApiAny source) { }
325336
}
326337
public class OpenApiEnumValuesDescriptionExtension : Microsoft.OpenApi.Interfaces.IOpenApiExtension
327338
{
@@ -330,7 +341,7 @@ namespace Microsoft.OpenApi.MicrosoftExtensions
330341
public System.Collections.Generic.List<Microsoft.OpenApi.MicrosoftExtensions.EnumDescription> ValuesDescriptions { get; set; }
331342
public static string Name { get; }
332343
public void Write(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.OpenApiSpecVersion specVersion) { }
333-
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiEnumValuesDescriptionExtension Parse(Microsoft.OpenApi.Any.IOpenApiAny source) { }
344+
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiEnumValuesDescriptionExtension Parse(Microsoft.OpenApi.Any.OpenApiAny source) { }
334345
}
335346
public class OpenApiPagingExtension : Microsoft.OpenApi.Interfaces.IOpenApiExtension
336347
{
@@ -340,23 +351,23 @@ namespace Microsoft.OpenApi.MicrosoftExtensions
340351
public string OperationName { get; set; }
341352
public static string Name { get; }
342353
public void Write(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.OpenApiSpecVersion specVersion) { }
343-
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiPagingExtension Parse(Microsoft.OpenApi.Any.IOpenApiAny source) { }
354+
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiPagingExtension Parse(Microsoft.OpenApi.Any.OpenApiAny source) { }
344355
}
345356
public class OpenApiPrimaryErrorMessageExtension : Microsoft.OpenApi.Interfaces.IOpenApiExtension
346357
{
347358
public OpenApiPrimaryErrorMessageExtension() { }
348359
public bool IsPrimaryErrorMessage { get; set; }
349360
public static string Name { get; }
350361
public void Write(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.OpenApiSpecVersion specVersion) { }
351-
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiPrimaryErrorMessageExtension Parse(Microsoft.OpenApi.Any.IOpenApiAny source) { }
362+
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiPrimaryErrorMessageExtension Parse(Microsoft.OpenApi.Any.OpenApiAny source) { }
352363
}
353364
public class OpenApiReservedParameterExtension : Microsoft.OpenApi.Interfaces.IOpenApiExtension
354365
{
355366
public OpenApiReservedParameterExtension() { }
356367
public bool? IsReserved { get; set; }
357368
public static string Name { get; }
358369
public void Write(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.OpenApiSpecVersion specVersion) { }
359-
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiReservedParameterExtension Parse(Microsoft.OpenApi.Any.IOpenApiAny source) { }
370+
public static Microsoft.OpenApi.MicrosoftExtensions.OpenApiReservedParameterExtension Parse(Microsoft.OpenApi.Any.OpenApiAny source) { }
360371
}
361372
}
362373
namespace Microsoft.OpenApi.Models
@@ -1542,6 +1553,7 @@ namespace Microsoft.OpenApi.Writers
15421553
public abstract void WriteRaw(string value);
15431554
public abstract void WriteStartArray();
15441555
public abstract void WriteStartObject();
1556+
public void WriteV2Examples(Microsoft.OpenApi.Writers.IOpenApiWriter writer, Microsoft.OpenApi.Models.OpenApiExample example, Microsoft.OpenApi.OpenApiSpecVersion version) { }
15451557
public virtual void WriteValue(bool value) { }
15461558
public virtual void WriteValue(System.DateTime value) { }
15471559
public virtual void WriteValue(System.DateTimeOffset value) { }
@@ -1572,6 +1584,8 @@ namespace Microsoft.OpenApi.Writers
15721584
where T : struct { }
15731585
public static void WriteProperty<T>(this Microsoft.OpenApi.Writers.IOpenApiWriter writer, string name, T? value)
15741586
where T : struct { }
1587+
public static void WriteRequiredCollection<T>(this Microsoft.OpenApi.Writers.IOpenApiWriter writer, string name, System.Collections.Generic.IEnumerable<T> elements, System.Action<Microsoft.OpenApi.Writers.IOpenApiWriter, T> action)
1588+
where T : Microsoft.OpenApi.Interfaces.IOpenApiElement { }
15751589
public static void WriteRequiredMap(this Microsoft.OpenApi.Writers.IOpenApiWriter writer, string name, System.Collections.Generic.IDictionary<string, string> elements, System.Action<Microsoft.OpenApi.Writers.IOpenApiWriter, string> action) { }
15761590
public static void WriteRequiredMap<T>(this Microsoft.OpenApi.Writers.IOpenApiWriter writer, string name, System.Collections.Generic.IDictionary<string, T> elements, System.Action<Microsoft.OpenApi.Writers.IOpenApiWriter, T> action)
15771591
where T : Microsoft.OpenApi.Interfaces.IOpenApiElement { }

test/Microsoft.OpenApi.Tests/Validations/ValidationRuleSetTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System.Collections.Generic;
@@ -52,8 +52,8 @@ public void RuleSetConstructorsReturnsTheCorrectRules()
5252
Assert.Empty(ruleSet_4.Rules);
5353

5454
// Update the number if you add new default rule(s).
55-
Assert.Equal(22, ruleSet_1.Rules.Count);
56-
Assert.Equal(22, ruleSet_2.Rules.Count);
55+
Assert.Equal(23, ruleSet_1.Rules.Count);
56+
Assert.Equal(23, ruleSet_2.Rules.Count);
5757
Assert.Equal(3, ruleSet_3.Rules.Count);
5858
}
5959

0 commit comments

Comments
 (0)