Skip to content

Commit

Permalink
Render Swagger UI links in a fancier, more useful way
Browse files Browse the repository at this point in the history
  • Loading branch information
commonsensesoftware committed Apr 14, 2024
1 parent 22a775b commit 2a70642
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 31 deletions.
31 changes: 26 additions & 5 deletions examples/AspNet/OData/OpenApiODataWebApiExample/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Asp.Versioning.Conventions;
using Asp.Versioning.OData;
using Microsoft.AspNet.OData.Extensions;
using Microsoft.Extensions.Primitives;
using Microsoft.OData;
using Newtonsoft.Json.Serialization;
using Owin;
Expand Down Expand Up @@ -131,25 +132,45 @@ public void Configuration( IAppBuilder builder )
{
description.AppendLine();
var rendered = false;
for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];
if ( link.Type == "text/html" )
{
description.AppendLine();
if ( link.Title.HasValue )
if ( !rendered )
{
description.Append( link.Title.Value ).Append( ": " );
description.AppendLine();
description.Append( "**Links**" );
description.AppendLine();
rendered = true;
}
description.Append( link.LinkTarget.OriginalString );
if ( StringSegment.IsNullOrEmpty( link.Title ) )
{
if ( link.LinkTarget.IsAbsoluteUri )
{
description.AppendLine( $"- {link.LinkTarget.OriginalString}" );
}
else
{
description.AppendFormat( "- <a href=\"{0}\">{0}</a>", link.LinkTarget.OriginalString );
description.AppendLine();
}
}
else
{
description.AppendLine( $"- [{link.Title}]({link.LinkTarget.OriginalString})" );
}
}
}
}
}
description.AppendLine();
description.AppendLine( "**Additional Information**" );
info.Version( group.Name, $"Sample API {group.ApiVersion}" )
.Contact( c => c.Name( "Bill Mei" ).Email( "bill.mei@somewhere.com" ) )
.Description( description.ToString() )
Expand Down
31 changes: 26 additions & 5 deletions examples/AspNet/OData/SomeOpenApiODataWebApiExample/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Asp.Versioning;
using Asp.Versioning.Conventions;
using Microsoft.AspNet.OData.Extensions;
using Microsoft.Extensions.Primitives;
using Microsoft.OData;
using Newtonsoft.Json.Serialization;
using Owin;
Expand Down Expand Up @@ -105,25 +106,45 @@ public void Configuration( IAppBuilder builder )
{
description.AppendLine();
var rendered = false;
for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];
if ( link.Type == "text/html" )
{
description.AppendLine();
if ( link.Title.HasValue )
if ( !rendered )
{
description.Append( link.Title.Value ).Append( ": " );
description.AppendLine();
description.Append( "**Links**" );
description.AppendLine();
rendered = true;
}
description.Append( link.LinkTarget.OriginalString );
if ( StringSegment.IsNullOrEmpty( link.Title ) )
{
if ( link.LinkTarget.IsAbsoluteUri )
{
description.AppendLine( $"- {link.LinkTarget.OriginalString}" );
}
else
{
description.AppendFormat( "- <a href=\"{0}\">{0}</a>", link.LinkTarget.OriginalString );
description.AppendLine();
}
}
else
{
description.AppendLine( $"- [{link.Title}]({link.LinkTarget.OriginalString})" );
}
}
}
}
}
description.AppendLine();
description.AppendLine( "**Additional Information**" );
info.Version( group.Name, $"Sample API {group.ApiVersion}" )
.Contact( c => c.Name( "Bill Mei" ).Email( "bill.mei@somewhere.com" ) )
.Description( description.ToString() )
Expand Down
32 changes: 27 additions & 5 deletions examples/AspNet/WebApi/OpenApiWebApiExample/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

using Asp.Versioning;
using Asp.Versioning.Routing;
using Microsoft.Extensions.Primitives;
using Owin;
using Swashbuckle.Application;
using System.IO;
Expand All @@ -10,6 +11,7 @@
using System.Web.Http;
using System.Web.Http.Description;
using System.Web.Http.Routing;
using static System.Net.Mime.MediaTypeNames;

/// <summary>
/// Represents the startup process for the application.
Expand Down Expand Up @@ -88,25 +90,45 @@ public void Configuration( IAppBuilder builder )
{
description.AppendLine();
var rendered = false;
for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];
if ( link.Type == "text/html" )
{
description.AppendLine();
if ( link.Title.HasValue )
if ( !rendered )
{
description.Append( link.Title.Value ).Append( ": " );
description.AppendLine();
description.Append( "**Links**" );
description.AppendLine();
rendered = true;
}
description.Append( link.LinkTarget.OriginalString );
if ( StringSegment.IsNullOrEmpty( link.Title ) )
{
if ( link.LinkTarget.IsAbsoluteUri )
{
description.AppendLine( $"- {link.LinkTarget.OriginalString}" );
}
else
{
description.AppendFormat( "- <a href=\"{0}\">{0}</a>", link.LinkTarget.OriginalString );
description.AppendLine();
}
}
else
{
description.AppendLine( $"- [{link.Title}]({link.LinkTarget.OriginalString})" );
}
}
}
}
}
description.AppendLine();
description.AppendLine( "**Additional Information**" );
info.Version( group.Name, $"Example API {group.ApiVersion}" )
.Contact( c => c.Name( "Bill Mei" ).Email( "bill.mei@somewhere.com" ) )
.Description( description.ToString() )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Asp.Versioning.ApiExplorer;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Text;
Expand Down Expand Up @@ -63,25 +64,39 @@ private static OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription descri
{
text.AppendLine();

var rendered = false;

for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];

if ( link.Type == "text/html" )
{
text.AppendLine();

if ( link.Title.HasValue )
if ( !rendered )
{
text.Append( link.Title.Value ).Append( ": " );
text.Append( "<h4>Links</h4><ul>" );
rendered = true;
}

text.Append( "<li><a href=\"" );
text.Append( link.LinkTarget.OriginalString );
text.Append( "\">" );
text.Append(
StringSegment.IsNullOrEmpty( link.Title )
? link.LinkTarget.OriginalString
: link.Title.ToString() );
text.Append( "</a></li>" );
}
}

if ( rendered )
{
text.Append( "</ul>" );
}
}
}

text.Append( "<h4>Additional Information</h4>" );
info.Description = text.ToString();

return info;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Asp.Versioning.ApiExplorer;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Text;
Expand Down Expand Up @@ -63,25 +64,39 @@ private static OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription descri
{
text.AppendLine();

var rendered = false;

for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];

if ( link.Type == "text/html" )
{
text.AppendLine();

if ( link.Title.HasValue )
if ( !rendered )
{
text.Append( link.Title.Value ).Append( ": " );
text.Append( "<h4>Links</h4><ul>" );
rendered = true;
}

text.Append( "<li><a href=\"" );
text.Append( link.LinkTarget.OriginalString );
text.Append( "\">" );
text.Append(
StringSegment.IsNullOrEmpty( link.Title )
? link.LinkTarget.OriginalString
: link.Title.ToString() );
text.Append( "</a></li>" );
}
}

if ( rendered )
{
text.Append( "</ul>" );
}
}
}

text.Append( "<h4>Additional Information</h4>" );
info.Description = text.ToString();

return info;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Asp.Versioning.ApiExplorer;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Text;
Expand Down Expand Up @@ -63,25 +64,39 @@ private static OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription descri
{
text.AppendLine();

var rendered = false;

for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];

if ( link.Type == "text/html" )
{
text.AppendLine();

if ( link.Title.HasValue )
if ( !rendered )
{
text.Append( link.Title.Value ).Append( ": " );
text.Append( "<h4>Links</h4><ul>" );
rendered = true;
}

text.Append( "<li><a href=\"" );
text.Append( link.LinkTarget.OriginalString );
text.Append( "\">" );
text.Append(
StringSegment.IsNullOrEmpty( link.Title )
? link.LinkTarget.OriginalString
: link.Title.ToString() );
text.Append( "</a></li>" );
}
}

if ( rendered )
{
text.Append( "</ul>" );
}
}
}

text.Append( "<h4>Additional Information</h4>" );
info.Description = text.ToString();

return info;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Asp.Versioning.ApiExplorer;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Text;
Expand Down Expand Up @@ -63,25 +64,39 @@ private static OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription descri
{
text.AppendLine();

var rendered = false;

for ( var i = 0; i < policy.Links.Count; i++ )
{
var link = policy.Links[i];

if ( link.Type == "text/html" )
{
text.AppendLine();

if ( link.Title.HasValue )
if ( !rendered )
{
text.Append( link.Title.Value ).Append( ": " );
text.Append( "<h4>Links</h4><ul>" );
rendered = true;
}

text.Append( "<li><a href=\"" );
text.Append( link.LinkTarget.OriginalString );
text.Append( "\">" );
text.Append(
StringSegment.IsNullOrEmpty( link.Title )
? link.LinkTarget.OriginalString
: link.Title.ToString() );
text.Append( "</a></li>" );
}
}

if ( rendered )
{
text.Append( "</ul>" );
}
}
}

text.Append( "<h4>Additional Information</h4>" );
info.Description = text.ToString();

return info;
Expand Down

0 comments on commit 2a70642

Please sign in to comment.