Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 31 additions & 24 deletions src/Microsoft.OpenApi.Hidi/OpenApiService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -664,18 +664,21 @@ internal static void WriteTreeDocumentAsHtml(string sourceUrl, OpenApiDocument d
{
var rootNode = OpenApiUrlTreeNode.Create(document, "main");

writer.WriteLine(@"<!doctype html>
<html>
<head>
<meta charset=""utf-8""/>
<script src=""https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.0.0/mermaid.min.js""></script>
</head>
<style>
body {
font-family: Verdana, sans-serif;
}
</style>
<body>");
writer.WriteLine(
"""
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.0.0/mermaid.min.js"></script>
</head>
<style>
body {
font-family: Verdana, sans-serif;
}
</style>
<body>
""");
writer.WriteLine("<h1>" + document.Info.Title + "</h1>");
writer.WriteLine();
writer.WriteLine($"<h3> API Description: <a href='{sourceUrl}'>{sourceUrl}</a></h3>");
Expand All @@ -686,25 +689,29 @@ internal static void WriteTreeDocumentAsHtml(string sourceUrl, OpenApiDocument d
{
writer.WriteLine($"<span style=\"padding:2px;background-color:{style.Value.Color};border: 2px solid\">{style.Key.Replace("_", " ", StringComparison.OrdinalIgnoreCase)}</span>");
}

writer.WriteLine("</div>");
writer.WriteLine("<hr/>");
writer.WriteLine("<code class=\"language-mermaid\">");
rootNode.WriteMermaid(writer);
writer.WriteLine("</code>");

// Write script tag to include JS library for rendering markdown
writer.WriteLine(@"<script>
var config = {
startOnLoad:true,
theme: 'forest',
flowchart:{
useMaxWidth:false,
htmlLabels:true
}
};
mermaid.initialize(config);
window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));
</script>");
writer.WriteLine(
"""
<script>
var config = {
startOnLoad:true,
theme: 'forest',
flowchart:{
useMaxWidth:false,
htmlLabels:true
}
};
mermaid.initialize(config);
window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));
</script>
""");
// Write script tag to include JS library for rendering mermaid
writer.WriteLine("</html");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,13 @@ public async Task LoadingDocumentWithResolveAllReferencesShouldLoadDocumentIntoW

// Todo: this should be ReadAsync
var stream = new MemoryStream();
var doc = @"openapi: 3.0.0
info:
title: foo
version: 1.0.0
paths: {}";
var doc = """
openapi: 3.0.0
info:
title: foo
version: 1.0.0
paths: {}
""";
var wr = new StreamWriter(stream);
wr.Write(doc);
wr.Flush();
Expand Down
44 changes: 24 additions & 20 deletions test/Microsoft.OpenApi.Readers.Tests/ParseNodeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@ public class ParseNodeTests
[Fact]
public void BrokenSimpleList()
{
var input = @"swagger: 2.0
info:
title: hey
version: 1.0.0
schemes: [ { ""hello"" }]
paths: { }";
var input =
"""
swagger: 2.0
info:
title: hey
version: 1.0.0
schemes: [ { "hello" }]
paths: { }
""";

var reader = new OpenApiStringReader();
reader.Read(input, out var diagnostic);
Expand All @@ -36,20 +39,21 @@ public void BrokenSimpleList()
[Fact]
public void BadSchema()
{
var input = @"openapi: 3.0.0
info:
title: foo
version: bar
paths:
'/foo':
get:
responses:
200:
description: ok
content:
application/json:
schema: asdasd
";
var input = """
openapi: 3.0.0
info:
title: foo
version: bar
paths:
'/foo':
get:
responses:
200:
description: ok
content:
application/json:
schema: asdasd
""";

var reader = new OpenApiStringReader();
reader.Read(input, out var diagnostic);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ public class OpenApiAnyConverterTests
[Fact]
public void ParseObjectAsAnyShouldSucceed()
{
var input = @"
aString: fooBar
aInteger: 10
aDouble: 2.34
aDateTime: 2017-01-01
aDate: 2017-01-02
";
var input =
"""
aString: fooBar
aInteger: 10
aDouble: 2.34
aDateTime: 2017-01-01
aDate: 2017-01-02
""";
var yamlStream = new YamlStream();
yamlStream.Load(new StringReader(input));
var yamlNode = yamlStream.Documents.First().RootNode;
Expand Down Expand Up @@ -89,30 +90,31 @@ public void ParseObjectAsAnyShouldSucceed()
[Fact]
public void ParseNestedObjectAsAnyShouldSucceed()
{
var input = @"
aString: fooBar
aInteger: 10
aArray:
- 1
- 2
- 3
aNestedArray:
- aFloat: 1
aPassword: 1234
aArray: [abc, def]
aDictionary:
arbitraryProperty: 1
arbitraryProperty2: 2
- aFloat: 1.6
aArray: [123]
aDictionary:
arbitraryProperty: 1
arbitraryProperty3: 20
aObject:
aDate: 2017-02-03
aDouble: 2.34
aDateTime: 2017-01-01
";
var input =
"""
aString: fooBar
aInteger: 10
aArray:
- 1
- 2
- 3
aNestedArray:
- aFloat: 1
aPassword: 1234
aArray: [abc, def]
aDictionary:
arbitraryProperty: 1
arbitraryProperty2: 2
- aFloat: 1.6
aArray: [123]
aDictionary:
arbitraryProperty: 1
arbitraryProperty3: 20
aObject:
aDate: 2017-02-03
aDouble: 2.34
aDateTime: 2017-01-01
""";
var yamlStream = new YamlStream();
yamlStream.Load(new StringReader(input));
var yamlNode = yamlStream.Documents.First().RootNode;
Expand Down Expand Up @@ -269,30 +271,31 @@ public void ParseNestedObjectAsAnyShouldSucceed()
[Fact]
public void ParseNestedObjectAsAnyWithPartialSchemaShouldSucceed()
{
var input = @"
aString: fooBar
aInteger: 10
aArray:
- 1
- 2
- 3
aNestedArray:
- aFloat: 1
aPassword: 1234
aArray: [abc, def]
aDictionary:
arbitraryProperty: 1
arbitraryProperty2: 2
- aFloat: 1.6
aArray: [123]
aDictionary:
arbitraryProperty: 1
arbitraryProperty3: 20
aObject:
aDate: 2017-02-03
aDouble: 2.34
aDateTime: 2017-01-01
";
var input =
"""
aString: fooBar
aInteger: 10
aArray:
- 1
- 2
- 3
aNestedArray:
- aFloat: 1
aPassword: 1234
aArray: [abc, def]
aDictionary:
arbitraryProperty: 1
arbitraryProperty2: 2
- aFloat: 1.6
aArray: [123]
aDictionary:
arbitraryProperty: 1
arbitraryProperty3: 20
aObject:
aDate: 2017-02-03
aDouble: 2.34
aDateTime: 2017-01-01
""";
var yamlStream = new YamlStream();
yamlStream.Load(new StringReader(input));
var yamlNode = yamlStream.Documents.First().RootNode;
Expand Down Expand Up @@ -424,30 +427,31 @@ public void ParseNestedObjectAsAnyWithPartialSchemaShouldSucceed()
[Fact]
public void ParseNestedObjectAsAnyWithoutUsingSchemaShouldSucceed()
{
var input = @"
aString: fooBar
aInteger: 10
aArray:
- 1
- 2
- 3
aNestedArray:
- aFloat: 1
aPassword: 1234
aArray: [abc, def]
aDictionary:
arbitraryProperty: 1
arbitraryProperty2: 2
- aFloat: 1.6
aArray: [123]
aDictionary:
arbitraryProperty: 1
arbitraryProperty3: 20
aObject:
aDate: 2017-02-03
aDouble: 2.34
aDateTime: 2017-01-01
";
var input =
"""
aString: fooBar
aInteger: 10
aArray:
- 1
- 2
- 3
aNestedArray:
- aFloat: 1
aPassword: 1234
aArray: [abc, def]
aDictionary:
arbitraryProperty: 1
arbitraryProperty2: 2
- aFloat: 1.6
aArray: [123]
aDictionary:
arbitraryProperty: 1
arbitraryProperty3: 20
aObject:
aDate: 2017-02-03
aDouble: 2.34
aDateTime: 2017-01-01
""";
var yamlStream = new YamlStream();
yamlStream.Load(new StringReader(input));
var yamlNode = yamlStream.Documents.First().RootNode;
Expand Down
Loading