Skip to content

Commit d0312ac

Browse files
committed
Move the json document parsing logic to OpenApiService
1 parent 29d207c commit d0312ac

File tree

2 files changed

+36
-34
lines changed

2 files changed

+36
-34
lines changed

src/Microsoft.OpenApi.Hidi/OpenApiService.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
// Licensed under the MIT license.
33

44
using System;
5+
using System.Collections.Generic;
56
using System.IO;
67
using System.Linq;
78
using System.Net;
89
using System.Net.Http;
910
using System.Text;
11+
using System.Text.Json;
1012
using Microsoft.OpenApi.Extensions;
1113
using Microsoft.OpenApi.Models;
1214
using Microsoft.OpenApi.Readers;
@@ -72,7 +74,7 @@ public static void ProcessOpenApiDocument(
7274
if (!string.IsNullOrEmpty(filterByCollection))
7375
{
7476
var fileStream = GetStream(filterByCollection);
75-
var requestUrls = OpenApiFilterService.ParseJsonCollectionFile(fileStream);
77+
var requestUrls = ParseJsonCollectionFile(fileStream);
7678
predicate = OpenApiFilterService.CreatePredicate(requestUrls: requestUrls, source:document);
7779
document = OpenApiFilterService.CreateFilteredDocument(document, predicate);
7880
}
@@ -133,6 +135,38 @@ private static Stream GetStream(string input)
133135
return stream;
134136
}
135137

138+
/// <summary>
139+
/// Takes in a file stream, parses the stream into a JsonDocument and gets a list of paths and Http methods
140+
/// </summary>
141+
/// <param name="stream"> A file stream.</param>
142+
/// <returns> A dictionary of request urls and http methods from a collection.</returns>
143+
private static Dictionary<string, List<string>> ParseJsonCollectionFile(Stream stream)
144+
{
145+
var requestUrls = new Dictionary<string, List<string>>();
146+
147+
// Convert file to JsonDocument
148+
using var document = JsonDocument.Parse(stream);
149+
var root = document.RootElement;
150+
var itemElement = root.GetProperty("item");
151+
foreach (var requestObject in itemElement.EnumerateArray().Select(item => item.GetProperty("request")))
152+
{
153+
// Fetch list of methods and urls from collection, store them in a dictionary
154+
var path = requestObject.GetProperty("url").GetProperty("raw").ToString();
155+
var method = requestObject.GetProperty("method").ToString();
156+
157+
if (!requestUrls.ContainsKey(path))
158+
{
159+
requestUrls.Add(path, new List<string> { method });
160+
}
161+
else
162+
{
163+
requestUrls[path].Add(method);
164+
}
165+
}
166+
167+
return requestUrls;
168+
}
169+
136170
internal static void ValidateOpenApiDocument(string input)
137171
{
138172
if (input == null)

src/Microsoft.OpenApi/Services/OpenApiFilterService.cs

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -186,39 +186,7 @@ public static OpenApiUrlTreeNode CreateOpenApiUrlTreeNode(Dictionary<string, Ope
186186
}
187187
return rootNode;
188188
}
189-
190-
/// <summary>
191-
/// Takes in a file stream, parses the stream into a JsonDocument and gets a list of paths and Http methods
192-
/// </summary>
193-
/// <param name="stream"> A file stream.</param>
194-
/// <returns> A dictionary of request urls and http methods from a collection.</returns>
195-
public static Dictionary<string, List<string>> ParseJsonCollectionFile(Stream stream)
196-
{
197-
var requestUrls = new Dictionary<string, List<string>>();
198-
199-
// Convert file to JsonDocument
200-
using var document = JsonDocument.Parse(stream);
201-
var root = document.RootElement;
202-
var itemElement = root.GetProperty("item");
203-
foreach(var requestObject in itemElement.EnumerateArray().Select(item => item.GetProperty("request")))
204-
{
205-
// Fetch list of methods and urls from collection, store them in a dictionary
206-
var path = requestObject.GetProperty("url").GetProperty("raw").ToString();
207-
var method = requestObject.GetProperty("method").ToString();
208-
209-
if (!requestUrls.ContainsKey(path))
210-
{
211-
requestUrls.Add(path, new List<string> { method });
212-
}
213-
else
214-
{
215-
requestUrls[path].Add(method);
216-
}
217-
}
218-
219-
return requestUrls;
220-
}
221-
189+
222190
private static IDictionary<OperationType, OpenApiOperation> GetOpenApiOperations(OpenApiUrlTreeNode rootNode, string relativeUrl, string label)
223191
{
224192
if (relativeUrl.Equals("/", StringComparison.Ordinal) && rootNode.HasOperations(label))

0 commit comments

Comments
 (0)