Skip to content

Commit e0b36a7

Browse files
Merge pull request #1170 from microsoft/vnext
Master refresh
2 parents bf7b8cf + 73d7f32 commit e0b36a7

File tree

10 files changed

+31
-25
lines changed

10 files changed

+31
-25
lines changed

src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
4343
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
4444
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
45-
<PackageReference Include="Microsoft.OData.Edm" Version="7.14.0" />
45+
<PackageReference Include="Microsoft.OData.Edm" Version="7.14.1" />
4646
<PackageReference Include="Microsoft.OpenApi.OData" Version="1.2.0" />
4747
<PackageReference Include="System.CommandLine.Hosting" Version="0.4.0-alpha.22272.1" />
4848
</ItemGroup>

src/Microsoft.OpenApi.Hidi/OpenApiService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ private static async Task<OpenApiDocument> GetOpenApi(string openapi, string csd
162162
else
163163
{
164164
stream = await GetStream(openapi, logger, cancellationToken);
165-
var result = await ParseOpenApi(openapi, inlineExternal, logger, stream);
165+
var result = await ParseOpenApi(openapi, inlineExternal, logger, stream, cancellationToken);
166166
document = result.OpenApiDocument;
167167
}
168168

@@ -253,7 +253,7 @@ public static async Task ValidateOpenApiDocument(
253253
{
254254
using var stream = await GetStream(openapi, logger, cancellationToken);
255255

256-
var result = await ParseOpenApi(openapi, false, logger, stream);
256+
var result = await ParseOpenApi(openapi, false, logger, stream, cancellationToken);
257257

258258
using (logger.BeginScope("Calculating statistics"))
259259
{
@@ -275,7 +275,7 @@ public static async Task ValidateOpenApiDocument(
275275
}
276276
}
277277

278-
private static async Task<ReadResult> ParseOpenApi(string openApiFile, bool inlineExternal, ILogger logger, Stream stream)
278+
private static async Task<ReadResult> ParseOpenApi(string openApiFile, bool inlineExternal, ILogger logger, Stream stream, CancellationToken cancellationToken)
279279
{
280280
ReadResult result;
281281
Stopwatch stopwatch = Stopwatch.StartNew();
@@ -290,7 +290,7 @@ private static async Task<ReadResult> ParseOpenApi(string openApiFile, bool inli
290290
new Uri(openApiFile) :
291291
new Uri("file://" + new FileInfo(openApiFile).DirectoryName + Path.DirectorySeparatorChar)
292292
}
293-
).ReadAsync(stream);
293+
).ReadAsync(stream, cancellationToken);
294294

295295
logger.LogTrace("{timestamp}ms: Completed parsing.", stopwatch.ElapsedMilliseconds);
296296

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<Company>Microsoft</Company>
1111
<Title>Microsoft.OpenApi.Readers</Title>
1212
<PackageId>Microsoft.OpenApi.Readers</PackageId>
13-
<Version>1.6.1</Version>
13+
<Version>1.6.2</Version>
1414
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
1515
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1616
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.IO;
6+
using System.Threading;
67
using System.Threading.Tasks;
78
using Microsoft.OpenApi.Interfaces;
89
using Microsoft.OpenApi.Models;
@@ -54,8 +55,9 @@ public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
5455
/// Reads the stream input and parses it into an Open API document.
5556
/// </summary>
5657
/// <param name="input">Stream containing OpenAPI description to parse.</param>
58+
/// <param name="cancellationToken">Cancellation token.</param>
5759
/// <returns>Instance result containing newly created OpenApiDocument and diagnostics object from the process</returns>
58-
public async Task<ReadResult> ReadAsync(Stream input)
60+
public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancellationToken = default)
5961
{
6062
MemoryStream bufferedStream;
6163
if (input is MemoryStream)
@@ -67,13 +69,14 @@ public async Task<ReadResult> ReadAsync(Stream input)
6769
// Buffer stream so that OpenApiTextReaderReader can process it synchronously
6870
// YamlDocument doesn't support async reading.
6971
bufferedStream = new MemoryStream();
70-
await input.CopyToAsync(bufferedStream);
72+
await input.CopyToAsync(bufferedStream, 81920, cancellationToken);
7173
bufferedStream.Position = 0;
7274
}
7375

74-
var reader = new StreamReader(bufferedStream);
75-
76-
return await new OpenApiTextReaderReader(_settings).ReadAsync(reader);
76+
using (var reader = new StreamReader(bufferedStream))
77+
{
78+
return await new OpenApiTextReaderReader(_settings).ReadAsync(reader, cancellationToken);
79+
}
7780
}
7881

7982
/// <summary>

src/Microsoft.OpenApi.Readers/OpenApiTextReaderReader.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System.IO;
55
using System.Linq;
6+
using System.Threading;
67
using System.Threading.Tasks;
78
using Microsoft.OpenApi.Interfaces;
89
using Microsoft.OpenApi.Models;
@@ -57,8 +58,9 @@ public OpenApiDocument Read(TextReader input, out OpenApiDiagnostic diagnostic)
5758
/// Reads the content of the TextReader. If there are references to external documents then they will be read asynchronously.
5859
/// </summary>
5960
/// <param name="input">TextReader containing OpenAPI description to parse.</param>
61+
/// <param name="cancellationToken">Cancellation token.</param>
6062
/// <returns>A ReadResult instance that contains the resulting OpenApiDocument and a diagnostics instance.</returns>
61-
public async Task<ReadResult> ReadAsync(TextReader input)
63+
public async Task<ReadResult> ReadAsync(TextReader input, CancellationToken cancellationToken = default)
6264
{
6365
YamlDocument yamlDocument;
6466

@@ -78,7 +80,7 @@ public async Task<ReadResult> ReadAsync(TextReader input)
7880
};
7981
}
8082

81-
return await new OpenApiYamlDocumentReader(this._settings).ReadAsync(yamlDocument);
83+
return await new OpenApiYamlDocumentReader(this._settings).ReadAsync(yamlDocument, cancellationToken);
8284
}
8385

8486

src/Microsoft.OpenApi.Readers/OpenApiYamlDocumentReader.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.IO;
77
using System.Linq;
8+
using System.Threading;
89
using System.Threading.Tasks;
910
using Microsoft.OpenApi.Exceptions;
1011
using Microsoft.OpenApi.Extensions;
@@ -84,7 +85,7 @@ public OpenApiDocument Read(YamlDocument input, out OpenApiDiagnostic diagnostic
8485
return document;
8586
}
8687

87-
public async Task<ReadResult> ReadAsync(YamlDocument input)
88+
public async Task<ReadResult> ReadAsync(YamlDocument input, CancellationToken cancellationToken = default)
8889
{
8990
var diagnostic = new OpenApiDiagnostic();
9091
var context = new ParsingContext(diagnostic)
@@ -101,7 +102,7 @@ public async Task<ReadResult> ReadAsync(YamlDocument input)
101102

102103
if (_settings.LoadExternalRefs)
103104
{
104-
await LoadExternalRefs(document);
105+
await LoadExternalRefs(document, cancellationToken);
105106
}
106107

107108
ResolveReferences(diagnostic, document);
@@ -132,15 +133,15 @@ public async Task<ReadResult> ReadAsync(YamlDocument input)
132133
};
133134
}
134135

135-
private async Task LoadExternalRefs(OpenApiDocument document)
136+
private async Task LoadExternalRefs(OpenApiDocument document, CancellationToken cancellationToken)
136137
{
137138
// Create workspace for all documents to live in.
138139
var openApiWorkSpace = new OpenApiWorkspace();
139140

140141
// Load this root document into the workspace
141142
var streamLoader = new DefaultStreamLoader(_settings.BaseUrl);
142143
var workspaceLoader = new OpenApiWorkspaceLoader(openApiWorkSpace, _settings.CustomExternalLoader ?? streamLoader, _settings);
143-
await workspaceLoader.LoadAsync(new OpenApiReference() { ExternalResource = "/" }, document);
144+
await workspaceLoader.LoadAsync(new OpenApiReference() { ExternalResource = "/" }, document, cancellationToken);
144145
}
145146

146147
private void ResolveReferences(OpenApiDiagnostic diagnostic, OpenApiDocument document)

src/Microsoft.OpenApi.Readers/Services/OpenApiWorkspaceLoader.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
using System.IO;
44
using System.Linq;
55
using System.Text;
6+
using System.Threading;
67
using System.Threading.Tasks;
78
using Microsoft.OpenApi.Models;
89
using Microsoft.OpenApi.Readers.Interface;
910
using Microsoft.OpenApi.Services;
10-
using SharpYaml.Model;
1111

1212
namespace Microsoft.OpenApi.Readers.Services
1313
{
@@ -24,7 +24,7 @@ public OpenApiWorkspaceLoader(OpenApiWorkspace workspace, IStreamLoader loader,
2424
_readerSettings = readerSettings;
2525
}
2626

27-
internal async Task LoadAsync(OpenApiReference reference, OpenApiDocument document)
27+
internal async Task LoadAsync(OpenApiReference reference, OpenApiDocument document, CancellationToken cancellationToken)
2828
{
2929
_workspace.AddDocument(reference.ExternalResource, document);
3030
document.Workspace = _workspace;
@@ -43,8 +43,8 @@ internal async Task LoadAsync(OpenApiReference reference, OpenApiDocument docume
4343
if (!_workspace.Contains(item.ExternalResource))
4444
{
4545
var input = await _loader.LoadAsync(new Uri(item.ExternalResource, UriKind.RelativeOrAbsolute));
46-
var result = await reader.ReadAsync(input); // TODO merge _diagnositics
47-
await LoadAsync(item, result.OpenApiDocument);
46+
var result = await reader.ReadAsync(input, cancellationToken); // TODO merge diagnostics
47+
await LoadAsync(item, result.OpenApiDocument, cancellationToken);
4848
}
4949
}
5050
}

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<Company>Microsoft</Company>
1212
<Title>Microsoft.OpenApi</Title>
1313
<PackageId>Microsoft.OpenApi</PackageId>
14-
<Version>1.6.1</Version>
14+
<Version>1.6.2</Version>
1515
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
1616
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1717
<PackageTags>OpenAPI .NET</PackageTags>

test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@
262262
<PrivateAssets>all</PrivateAssets>
263263
</PackageReference>
264264
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
265-
<PackageReference Include="FluentAssertions" Version="6.9.0">
265+
<PackageReference Include="FluentAssertions" Version="6.10.0">
266266
</PackageReference>
267267
<PackageReference Include="Newtonsoft.Json" Version="13.0.2">
268268
</PackageReference>

test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2424
<PrivateAssets>all</PrivateAssets>
2525
</PackageReference>
26-
<PackageReference Include="FluentAssertions" Version="6.9.0" />
26+
<PackageReference Include="FluentAssertions" Version="6.10.0" />
2727
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
2828
<PackageReference Include="Moq" Version="4.18.4" />
2929
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
3030
<PackageReference Include="SharpYaml" Version="2.1.0" />
31-
<PackageReference Include="Verify.Xunit" Version="19.9.2" />
31+
<PackageReference Include="Verify.Xunit" Version="19.9.3" />
3232
<PackageReference Include="xunit" Version="2.4.2" />
3333
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
3434
<PrivateAssets>all</PrivateAssets>

0 commit comments

Comments
 (0)