mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-14 01:02:57 -07:00
Adds xml documentation generation. Better error handling when xml documentation is missing.
This commit is contained in:
parent
e2ba527aaf
commit
923a848deb
2 changed files with 42 additions and 44 deletions
|
@ -1,13 +1,9 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.JsonPatch.Operations;
|
||||
using Microsoft.AspNetCore.Mvc.ApiExplorer;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
@ -15,18 +11,16 @@ using Microsoft.OpenApi.Models;
|
|||
using Ombi.Config;
|
||||
using Ombi.Helpers;
|
||||
using Ombi.Models.Identity;
|
||||
using Swashbuckle.AspNetCore.Swagger;
|
||||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||
|
||||
namespace Ombi
|
||||
{
|
||||
public static class StartupExtensions
|
||||
public static class StartupExtensions
|
||||
{
|
||||
public static void AddSwagger(this IServiceCollection services)
|
||||
{
|
||||
services.AddSwaggerGen(c =>
|
||||
{
|
||||
c.SwaggerDoc("v1", new OpenApiInfo()
|
||||
c.SwaggerDoc("v1", new OpenApiInfo
|
||||
{
|
||||
Version = "v1",
|
||||
Title = "Ombi Api V1",
|
||||
|
@ -37,35 +31,39 @@ namespace Ombi
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
c.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme
|
||||
{
|
||||
Description = "API Key provided by Ombi. Example: \"ApiKey: {token}\"",
|
||||
Name = "ApiKey",
|
||||
In = ParameterLocation.Header,
|
||||
In = ParameterLocation.Header,
|
||||
Type = SecuritySchemeType.ApiKey
|
||||
});
|
||||
|
||||
c.CustomSchemaIds(x => x.FullName);
|
||||
var basePath = Path.GetDirectoryName(AppContext.BaseDirectory);
|
||||
var xmlPath = Path.Combine(basePath, "Swagger.xml");
|
||||
|
||||
try
|
||||
{
|
||||
c.IncludeXmlComments(xmlPath);
|
||||
string basePath = Path.GetDirectoryName(AppContext.BaseDirectory);
|
||||
string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
|
||||
string xmlPath = Path.Combine(basePath ?? string.Empty, $"{assemblyName}.xml");
|
||||
if (File.Exists(xmlPath))
|
||||
{
|
||||
c.IncludeXmlComments(xmlPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Swagger failed to find documentation file at '{xmlPath}'.");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
|
||||
|
||||
c.DescribeAllParametersInCamelCase();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void AddAppSettingsValues(this IServiceCollection services, IConfigurationRoot configuration)
|
||||
{
|
||||
services.Configure<ApplicationSettings>(configuration.GetSection("ApplicationSettings"));
|
||||
|
@ -78,13 +76,10 @@ namespace Ombi
|
|||
|
||||
public static void AddJwtAuthentication(this IServiceCollection services, IConfigurationRoot configuration)
|
||||
{
|
||||
var tokenOptions = configuration.GetSection("TokenAuthentication");
|
||||
|
||||
var tokenValidationParameters = new TokenValidationParameters
|
||||
{
|
||||
ValidateIssuerSigningKey = true,
|
||||
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(StartupSingleton.Instance.SecurityKey)),
|
||||
|
||||
RequireExpirationTime = true,
|
||||
ValidateLifetime = true,
|
||||
ValidAudience = "Ombi",
|
||||
|
@ -92,33 +87,35 @@ namespace Ombi
|
|||
ClockSkew = TimeSpan.Zero,
|
||||
};
|
||||
|
||||
services.AddAuthentication(options =>
|
||||
{
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
}).AddJwtBearer(x =>
|
||||
{
|
||||
x.Audience = "Ombi";
|
||||
x.TokenValidationParameters = tokenValidationParameters;
|
||||
x.Events = new JwtBearerEvents
|
||||
services
|
||||
.AddAuthentication(options =>
|
||||
{
|
||||
OnMessageReceived = context =>
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
})
|
||||
.AddJwtBearer(x =>
|
||||
{
|
||||
x.Audience = "Ombi";
|
||||
x.TokenValidationParameters = tokenValidationParameters;
|
||||
x.Events = new JwtBearerEvents
|
||||
{
|
||||
var accessToken = context.Request.Query["access_token"];
|
||||
|
||||
// If the request is for our hub...
|
||||
var path = context.HttpContext.Request.Path;
|
||||
if (!string.IsNullOrEmpty(accessToken) &&
|
||||
(path.StartsWithSegments("/hubs")))
|
||||
OnMessageReceived = context =>
|
||||
{
|
||||
// Read the token out of the query string
|
||||
context.Token = accessToken;
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
};
|
||||
});
|
||||
var accessToken = context.Request.Query["access_token"];
|
||||
|
||||
// If the request is for our hub...
|
||||
var path = context.HttpContext.Request.Path;
|
||||
if (!string.IsNullOrEmpty(accessToken) &&
|
||||
(path.StartsWithSegments("/hubs")))
|
||||
{
|
||||
// Read the token out of the query string
|
||||
context.Token = accessToken;
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,6 +14,7 @@
|
|||
<SpaRoot>ClientApp\</SpaRoot>
|
||||
<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
|
||||
<TieredCompilationQuickJit>true</TieredCompilationQuickJit> <!--https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#tiered-compilation-->
|
||||
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue