diff --git a/Microsoft.Kiota.Abstractions.Tests/RequestInformationTests.cs b/Microsoft.Kiota.Abstractions.Tests/RequestInformationTests.cs index 3d7f66a0..30108f04 100644 --- a/Microsoft.Kiota.Abstractions.Tests/RequestInformationTests.cs +++ b/Microsoft.Kiota.Abstractions.Tests/RequestInformationTests.cs @@ -153,6 +153,28 @@ public void SetsPathParametersOfBooleanType() // Assert Assert.Contains("%24count=true", requestInfo.URI.OriginalString); } + [Fact] + public void SetsPathParametersOfGuidType() + { + // Arrange as the request builders would + var requestInfo = new RequestInformation + { + HttpMethod = Method.GET, + UrlTemplate = "http://localhost/users{?%24requestId}" + }; + + // Act + var guid = Guid.Parse("6d320a89-2d8f-4204-855d-b98a1bc176d4"); + var pathParameters = new Dictionary + { + { "%24requestId", guid } + }; + + requestInfo.PathParameters = pathParameters; + + // Assert + Assert.Contains($"%24requestId=6d320a89-2d8f-4204-855d-b98a1bc176d4", requestInfo.URI.OriginalString); + } [Fact] public void ThrowsInvalidOperationExceptionWhenBaseUrlNotSet() @@ -369,6 +391,9 @@ internal class GetQueryParameters /// Select properties to be returned\ [QueryParameter("%24select")] public string[] Select { get; set; } + /// Unique id of the request + [QueryParameter("%24requestId")] + public Guid RequestId { get; set; } /// Include count of items [QueryParameter("%24count")] public bool? Count { get; set; } diff --git a/src/RequestInformation.cs b/src/RequestInformation.cs index 8be72538..341cbf83 100644 --- a/src/RequestInformation.cs +++ b/src/RequestInformation.cs @@ -77,6 +77,7 @@ public Uri URI bool boolean => boolean.ToString().ToLower(),// pass in a lowercase string as the final url will be uppercase due to the way ToString() works for booleans DateTimeOffset dateTimeOffset => dateTimeOffset.ToString("o"),// Default to ISO 8601 for datetimeoffsets in the url. DateTime dateTime => dateTime.ToString("o"),// Default to ISO 8601 for datetimes in the url. + Guid guid => guid.ToString("D"),// Default of 32 digits separated by hyphens _ => value,//return object as is as the ToString method is good enough. };