in src/Microsoft.OpenApi.Workbench/MainModel.cs [183:244]
internal void ParseDocument()
{
try
{
Stream stream;
if (!String.IsNullOrWhiteSpace(_inputFile))
{
stream = new FileStream(_inputFile, FileMode.Open);
}
else
{
stream = CreateStream(_input);
}
var stopwatch = new Stopwatch();
stopwatch.Start();
var document = new OpenApiStreamReader(new OpenApiReaderSettings
{
ReferenceResolution = ReferenceResolutionSetting.ResolveLocalReferences,
RuleSet = ValidationRuleSet.GetDefaultRuleSet()
}
).Read(stream, out var context);
stopwatch.Stop();
ParseTime = $"{stopwatch.ElapsedMilliseconds} ms";
if (context.Errors.Count == 0)
{
Errors = "OK";
}
else
{
var errorReport = new StringBuilder();
foreach (var error in context.Errors)
{
errorReport.AppendLine(error.ToString());
}
Errors = errorReport.ToString();
}
stopwatch.Reset();
stopwatch.Start();
Output = WriteContents(document);
stopwatch.Stop();
RenderTime = $"{stopwatch.ElapsedMilliseconds} ms";
var statsVisitor = new StatsVisitor();
var walker = new OpenApiWalker(statsVisitor);
walker.Walk(document);
Errors += Environment.NewLine + "Statistics:" + Environment.NewLine + statsVisitor.GetStatisticsReport();
}
catch (Exception ex)
{
Output = string.Empty;
Errors = "Failed to parse input: " + ex.Message;
}
}