Skip to content

Commit e01db74

Browse files
committed
Pass a cancellation token to allow cancelling requests/tasks
1 parent ab059fc commit e01db74

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,10 +540,11 @@ private static string ConvertByteArrayToString(byte[] hash)
540540
/// </summary>
541541
/// <param name="url"> The path to the OpenAPI file.</param>
542542
/// <param name="settings">The OpenApi reader settings.</param>
543+
/// <param name="cancellationToken"></param>
543544
/// <returns></returns>
544-
public static async Task<ReadResult> LoadAsync(string url, OpenApiReaderSettings? settings = null)
545+
public static async Task<ReadResult> LoadAsync(string url, OpenApiReaderSettings? settings = null, CancellationToken cancellationToken = default)
545546
{
546-
return await OpenApiModelFactory.LoadAsync(url, settings);
547+
return await OpenApiModelFactory.LoadAsync(url, settings, cancellationToken);
547548
}
548549

549550
/// <summary>

src/Microsoft.OpenApi/Reader/OpenApiModelFactory.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ static OpenApiModelFactory()
3131
/// </summary>
3232
/// <param name="url">The path to the OpenAPI file</param>
3333
/// <param name="settings"> The OpenApi reader settings.</param>
34+
/// <param name="cancellationToken"></param>
3435
/// <returns></returns>
35-
public static async Task<ReadResult> LoadAsync(string url, OpenApiReaderSettings settings = null)
36+
public static async Task<ReadResult> LoadAsync(string url, OpenApiReaderSettings settings = null, CancellationToken cancellationToken = default)
3637
{
3738
var format = await GetFormatAsync(url);
38-
var stream = await GetStreamAsync(url);
39+
var stream = await GetStreamAsync(url, cancellationToken);
3940
return await LoadAsync(stream, format, settings);
4041
}
4142

@@ -132,13 +133,17 @@ public static async Task<ReadFragmentResult> ParseAsync<T>(string input,
132133
/// <param name="url">The path to the OpenAPI file</param>
133134
/// <param name="version">Version of the OpenAPI specification that the fragment conforms to.</param>
134135
/// <param name="settings">The OpenApiReader settings.</param>
136+
/// <param name="cancellationToken"></param>
135137
/// <returns>Instance of newly created IOpenApiElement.</returns>
136138
/// <returns>The OpenAPI element.</returns>
137-
public static async Task<ReadFragmentResult> LoadAsync<T>(string url, OpenApiSpecVersion version, OpenApiReaderSettings settings = null) where T : IOpenApiElement
139+
public static async Task<ReadFragmentResult> LoadAsync<T>(string url,
140+
OpenApiSpecVersion version,
141+
OpenApiReaderSettings settings = null,
142+
CancellationToken cancellationToken = default) where T : IOpenApiElement
138143
{
139144
var format = await GetFormatAsync(url);
140145
settings ??= new OpenApiReaderSettings();
141-
var stream = await GetStreamAsync(url);
146+
var stream = await GetStreamAsync(url, cancellationToken);
142147
return await LoadAsync<T>(stream, version, format, settings);
143148
}
144149

@@ -278,7 +283,7 @@ private static string InspectTextReaderFormat(TextReader reader)
278283
return input.StartsWith("{") || input.StartsWith("[") ? OpenApiConstants.Json : OpenApiConstants.Yaml;
279284
}
280285

281-
private static async Task<Stream> GetStreamAsync(string url)
286+
private static async Task<Stream> GetStreamAsync(string url, CancellationToken cancellationToken = default)
282287
{
283288
Stream stream;
284289
if (url.StartsWith("http", StringComparison.OrdinalIgnoreCase) || url.StartsWith("https", StringComparison.OrdinalIgnoreCase))

0 commit comments

Comments
 (0)