From 60768b1b3e23fd7ce214625571167e6ea904a5f3 Mon Sep 17 00:00:00 2001 From: MattMo Date: Sun, 5 Feb 2023 13:27:10 -0800 Subject: [PATCH] Added a hidden route attribute that can be used to exclude a given route from code generation. Bumped package version to 1.2.1 --- Rest.Net/ClientCodeGenerator.cs | 14 ++++++++++++++ Rest.Net/Rest.Net.csproj | 2 +- Rest.Net/RouteHidden.cs | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 Rest.Net/RouteHidden.cs diff --git a/Rest.Net/ClientCodeGenerator.cs b/Rest.Net/ClientCodeGenerator.cs index 5c92249..c12ecb1 100644 --- a/Rest.Net/ClientCodeGenerator.cs +++ b/Rest.Net/ClientCodeGenerator.cs @@ -327,6 +327,20 @@ namespace MontoyaTech.Rest.Net /// public static string GenerateCSharpClient(List routes, string name = "Client") { + //Remove any hidden routes from code generation. + for (int i = 0; i < routes.Count; i++) + { + var methodInfo = routes[i].GetTarget().GetMethodInfo(); + + var routeHidden = methodInfo.GetCustomAttribute(); + + if (routeHidden != null) + { + routes.RemoveAt(i); + i--; + } + } + var includedTypes = FindRoutesDependencies(routes); var routeGroups = FindRouteGroups(routes); diff --git a/Rest.Net/Rest.Net.csproj b/Rest.Net/Rest.Net.csproj index 1afc87e..c02bef2 100644 --- a/Rest.Net/Rest.Net.csproj +++ b/Rest.Net/Rest.Net.csproj @@ -17,7 +17,7 @@ MontoyaTech.Rest.Net MontoyaTech.Rest.Net True - 1.2.0 + 1.2.1 Logo_Symbol_Black_Outline.png diff --git a/Rest.Net/RouteHidden.cs b/Rest.Net/RouteHidden.cs new file mode 100644 index 0000000..4043d83 --- /dev/null +++ b/Rest.Net/RouteHidden.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MontoyaTech.Rest.Net +{ + /// + /// The outline of an Attribute to hide a given route for client code generation. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class RouteHidden : Attribute + { + /// + /// Creates a default RouteHidden attribute. + /// + public RouteHidden() { } + } +}