diff --git a/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj b/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj
index 59fdf472..3bc50076 100644
--- a/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj
+++ b/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj
@@ -11,7 +11,6 @@
-
diff --git a/src/Kyoo.Abstractions/Models/Attributes/AltRoute/AltHttpGetAttribute.cs b/src/Kyoo.Abstractions/Models/Attributes/AltRoute/AltHttpGetAttribute.cs
deleted file mode 100644
index 99f843b6..00000000
--- a/src/Kyoo.Abstractions/Models/Attributes/AltRoute/AltHttpGetAttribute.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using JetBrains.Annotations;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Kyoo.Abstractions.Models.Attributes
-{
- ///
- /// A custom that indicate an alternatives, hidden route.
- ///
- public class AltHttpGetAttribute : HttpGetAttribute
- {
- ///
- /// Create a new .
- ///
- /// The route template, see .
- public AltHttpGetAttribute([NotNull] [RouteTemplateAttribute] string template)
- : base(template)
- { }
- }
-}
diff --git a/src/Kyoo.Abstractions/Models/Attributes/AltRoute/AltRouteAttribute.cs b/src/Kyoo.Abstractions/Models/Utils/Constants.cs
similarity index 58%
rename from src/Kyoo.Abstractions/Models/Attributes/AltRoute/AltRouteAttribute.cs
rename to src/Kyoo.Abstractions/Models/Utils/Constants.cs
index 71734979..595877fb 100644
--- a/src/Kyoo.Abstractions/Models/Attributes/AltRoute/AltRouteAttribute.cs
+++ b/src/Kyoo.Abstractions/Models/Utils/Constants.cs
@@ -16,24 +16,17 @@
// You should have received a copy of the GNU General Public License
// along with Kyoo. If not, see .
-using System;
-using JetBrains.Annotations;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Kyoo.Abstractions.Models.Attributes
+namespace Kyoo.Abstractions.Models.Utils
{
///
- /// A custom that indicate an alternatives, hidden route.
+ /// A class containing constant numbers.
///
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
- public class AltRouteAttribute : RouteAttribute
+ public static class Constants
{
///
- /// Create a new .
+ /// A property to use on a Microsoft.AspNet.MVC.Route.Order property to mark it as an alternative route
+ /// that won't be included on the swagger.
///
- /// The route template, see .
- public AltRouteAttribute([NotNull] [RouteTemplateAttribute] string template)
- : base(template)
- { }
+ public const int AlternativeRoute = 1;
}
}
diff --git a/src/Kyoo.Core/Views/CollectionApi.cs b/src/Kyoo.Core/Views/CollectionApi.cs
index 6ff5fe9b..93c54520 100644
--- a/src/Kyoo.Core/Views/CollectionApi.cs
+++ b/src/Kyoo.Core/Views/CollectionApi.cs
@@ -22,17 +22,17 @@ using System.Linq;
using System.Threading.Tasks;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
-using Kyoo.Abstractions.Models.Attributes;
using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Abstractions.Models.Permissions;
using Kyoo.Core.Models.Options;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
+using static Kyoo.Abstractions.Models.Utils.Constants;
namespace Kyoo.Core.Api
{
[Route("api/collections")]
- [AltRoute("api/collection")]
+ [Route("api/collection", Order = AlternativeRoute)]
[ApiController]
[PartialPermission(nameof(CollectionApi))]
public class CollectionApi : CrudApi
@@ -53,7 +53,7 @@ namespace Kyoo.Core.Api
}
[HttpGet("{id:int}/shows")]
- [AltHttpGet("{id:int}/show")]
+ [HttpGet("{id:int}/show", Order = AlternativeRoute)]
[PartialPermission(Kind.Read)]
public async Task>> GetShows(int id,
[FromQuery] string sortBy,
@@ -79,7 +79,7 @@ namespace Kyoo.Core.Api
}
[HttpGet("{slug}/shows")]
- [AltHttpGet("{slug}/show")]
+ [HttpGet("{slug}/show", Order = AlternativeRoute)]
[PartialPermission(Kind.Read)]
public async Task>> GetShows(string slug,
[FromQuery] string sortBy,
@@ -105,7 +105,7 @@ namespace Kyoo.Core.Api
}
[HttpGet("{id:int}/libraries")]
- [AltHttpGet("{id:int}/library")]
+ [HttpGet("{id:int}/library", Order = AlternativeRoute)]
[PartialPermission(Kind.Read)]
public async Task>> GetLibraries(int id,
[FromQuery] string sortBy,
@@ -131,7 +131,7 @@ namespace Kyoo.Core.Api
}
[HttpGet("{slug}/libraries")]
- [AltHttpGet("{slug}/library")]
+ [HttpGet("{slug}/library", Order = AlternativeRoute)]
[PartialPermission(Kind.Read)]
public async Task>> GetLibraries(string slug,
[FromQuery] string sortBy,
diff --git a/src/Kyoo.Swagger/SwaggerModule.cs b/src/Kyoo.Swagger/SwaggerModule.cs
index 84375c49..92c947eb 100644
--- a/src/Kyoo.Swagger/SwaggerModule.cs
+++ b/src/Kyoo.Swagger/SwaggerModule.cs
@@ -19,12 +19,11 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using Kyoo.Abstractions.Controllers;
-using Kyoo.Abstractions.Models.Attributes;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
+using static Kyoo.Abstractions.Models.Utils.Constants;
namespace Kyoo.Swagger
{
@@ -71,12 +70,9 @@ namespace Kyoo.Swagger
options.IncludeXmlComments(documentation);
options.UseAllOfForInheritance();
-
- options.DocInclusionPredicate((_, apiDescription) =>
- {
- return apiDescription.ActionDescriptor.EndpointMetadata
- .All(x => x is not AltRouteAttribute && x is not AltHttpGetAttribute);
- });
+ options.SwaggerGeneratorOptions.SortKeySelector = x => x.RelativePath;
+ options.DocInclusionPredicate((_, apiDescription)
+ => apiDescription.ActionDescriptor.AttributeRouteInfo?.Order != AlternativeRoute);
});
}