Skip to content

Commit 7c17a09

Browse files
committed
Refactor the LoadExtensions method for reuse
1 parent 6cd8a82 commit 7c17a09

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

src/Microsoft.OpenApi.Readers/V2/OpenApiParameterDeserializer.cs

Lines changed: 13 additions & 2 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;
@@ -95,12 +95,17 @@ internal static partial class OpenApiV2Deserializer
9595
"schema",
9696
(o, n) => o.Schema = LoadSchema(n)
9797
},
98+
{
99+
"x-examples",
100+
LoadParameterExamplesExtension
101+
},
98102
};
99103

100104
private static readonly PatternFieldMap<OpenApiParameter> _parameterPatternFields =
101105
new()
102106
{
103-
{s => s.StartsWith("x-"), (o, p, n) => o.AddExtension(p, LoadExtension(p, n))}
107+
{s => s.StartsWith("x-") && !s.Equals(OpenApiConstants.ExamplesExtension, StringComparison.OrdinalIgnoreCase),
108+
(o, p, n) => o.AddExtension(p, LoadExtension(p, n))}
104109
};
105110

106111
private static readonly AnyFieldMap<OpenApiParameter> _parameterAnyFields =
@@ -166,6 +171,12 @@ private static void LoadStyle(OpenApiParameter p, string v)
166171
}
167172
}
168173

174+
private static void LoadParameterExamplesExtension(OpenApiParameter parameter, ParseNode node)
175+
{
176+
var examples = LoadExamplesExtension(node);
177+
node.Context.SetTempStorage(TempStorageKeys.Examples, examples, parameter);
178+
}
179+
169180
private static OpenApiSchema GetOrCreateSchema(OpenApiParameter p)
170181
{
171182
if (p.Schema == null)

src/Microsoft.OpenApi.Readers/V2/OpenApiResponseDeserializer.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ internal static partial class OpenApiV2Deserializer
3131
},
3232
{
3333
"x-examples",
34-
LoadExamplesExtension
34+
LoadResponseExamplesExtension
3535
},
3636
{
3737
"schema",
@@ -42,7 +42,8 @@ internal static partial class OpenApiV2Deserializer
4242
private static readonly PatternFieldMap<OpenApiResponse> _responsePatternFields =
4343
new()
4444
{
45-
{s => s.StartsWith("x-") && !s.Equals(OpenApiConstants.ExamplesExtension, StringComparison.OrdinalIgnoreCase), (o, p, n) => o.AddExtension(p, LoadExtension(p, n))}
45+
{s => s.StartsWith("x-") && !s.Equals(OpenApiConstants.ExamplesExtension, StringComparison.OrdinalIgnoreCase),
46+
(o, p, n) => o.AddExtension(p, LoadExtension(p, n))}
4647
};
4748

4849
private static readonly AnyFieldMap<OpenApiMediaType> _mediaTypeAnyFields =
@@ -104,7 +105,13 @@ private static void ProcessProduces(MapNode mapNode, OpenApiResponse response, P
104105
context.SetTempStorage(TempStorageKeys.ResponseProducesSet, true, response);
105106
}
106107

107-
private static void LoadExamplesExtension(OpenApiResponse response, ParseNode node)
108+
private static void LoadResponseExamplesExtension(OpenApiResponse response, ParseNode node)
109+
{
110+
var examples = LoadExamplesExtension(node);
111+
node.Context.SetTempStorage(TempStorageKeys.Examples, examples, response);
112+
}
113+
114+
private static Dictionary<string, OpenApiExample> LoadExamplesExtension(ParseNode node)
108115
{
109116
var mapNode = node.CheckMapNode(OpenApiConstants.ExamplesExtension);
110117
var examples = new Dictionary<string, OpenApiExample>();
@@ -131,12 +138,12 @@ private static void LoadExamplesExtension(OpenApiResponse response, ParseNode no
131138
example.ExternalValue = valueNode.Value.GetScalarValue();
132139
break;
133140
}
134-
}
141+
}
135142

136143
examples.Add(examplesNode.Name, example);
137144
}
138145

139-
node.Context.SetTempStorage(TempStorageKeys.Examples, examples, response);
146+
return examples;
140147
}
141148

142149
private static void LoadExamples(OpenApiResponse response, ParseNode node)

0 commit comments

Comments
 (0)