From 510525707142b331d0b7ad8850810bae6c787455 Mon Sep 17 00:00:00 2001 From: Casper Schmidt Wandahl-Liper Date: Thu, 27 Jun 2024 22:08:34 +0200 Subject: [PATCH] Fix: Escape paths containing the keyword "item" Fixes #4814 --- src/Kiota.Builder/Extensions/OpenApiUrlTreeNodeExtensions.cs | 2 +- src/Kiota.Builder/KiotaBuilder.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Kiota.Builder/Extensions/OpenApiUrlTreeNodeExtensions.cs b/src/Kiota.Builder/Extensions/OpenApiUrlTreeNodeExtensions.cs index 220d249bd5..ff31141c18 100644 --- a/src/Kiota.Builder/Extensions/OpenApiUrlTreeNodeExtensions.cs +++ b/src/Kiota.Builder/Extensions/OpenApiUrlTreeNodeExtensions.cs @@ -13,7 +13,7 @@ public static partial class OpenApiUrlTreeNodeExtensions { private static string GetDotIfBothNotNullOfEmpty(string x, string y) => string.IsNullOrEmpty(x) || string.IsNullOrEmpty(y) ? string.Empty : "."; private static readonly Func replaceSingleParameterSegmentByItem = - static x => x.IsPathSegmentWithSingleSimpleParameter() ? "item" : x; + static x => x.IsPathSegmentWithSingleSimpleParameter() ? "item" : ("item".Equals(x, StringComparison.OrdinalIgnoreCase) ? "item_escaped" : x); private static readonly char[] namespaceNameSplitCharacters = ['.', '-', '$']; //$ref from OData private const string EscapedSuffix = "Escaped"; internal static string GetNamespaceFromPath(this string currentPath, string prefix) => diff --git a/src/Kiota.Builder/KiotaBuilder.cs b/src/Kiota.Builder/KiotaBuilder.cs index 226e831e78..fe2beff127 100644 --- a/src/Kiota.Builder/KiotaBuilder.cs +++ b/src/Kiota.Builder/KiotaBuilder.cs @@ -602,7 +602,7 @@ private void CreateRequestBuilderClass(CodeNamespace currentNamespace, OpenApiUr var className = currentNode.DoesNodeBelongToItemSubnamespace() ? currentNode.GetNavigationPropertyName(config.StructuredMimeTypes, ItemRequestBuilderSuffix) : currentNode.GetNavigationPropertyName(config.StructuredMimeTypes, RequestBuilderSuffix); codeClass = targetNS.AddClass(new CodeClass { - Name = className.CleanupSymbolName(), + Name = currentNamespace.Name.EndsWith("item_escaped", StringComparison.InvariantCultureIgnoreCase) ? className.CleanupSymbolName().Replace("item", "item_escaped", StringComparison.InvariantCultureIgnoreCase) : className.CleanupSymbolName(), Kind = CodeClassKind.RequestBuilder, Documentation = new() {