Skip to content

Commit ffd5deb

Browse files
author
Andrew Omondi
committed
Align compression changes
1 parent 441c3af commit ffd5deb

File tree

4 files changed

+35
-36
lines changed

4 files changed

+35
-36
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project does adheres to [Semantic Versioning](https://semver.org/spec/v
77

88
## [Unreleased]
99

10+
## [3.1.14] - 2024-07-23
11+
12+
### Changed
13+
14+
- Obsoletes custom decompression handler in favor of native client capabilities at https://github.com/microsoft/kiota-dotnet/pull/303
15+
1016
## [3.1.12] - 2024-07-03
1117

1218
### Changed

src/Microsoft.Graph.Core/Microsoft.Graph.Core.csproj

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<AssemblyOriginatorKeyFile>35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>
2222
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
2323
<!-- x-release-please-start-version -->
24-
<VersionPrefix>3.1.13</VersionPrefix>
24+
<VersionPrefix>3.1.14</VersionPrefix>
2525
<!-- x-release-please-end -->
2626
<!-- VersionPrefix minor version should not be set when the change comes from the generator. It will be updated automatically. -->
2727
<!-- VersionPrefix minor version must be manually set when making manual changes to code. -->
@@ -62,15 +62,15 @@
6262
</None>
6363
</ItemGroup>
6464
<ItemGroup>
65-
<PackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="7.6.2" />
65+
<PackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.0.1" />
6666
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
67-
<PackageReference Include="Microsoft.Kiota.Abstractions" Version="[1.9.6, 2.0.0)" />
68-
<PackageReference Include="Microsoft.Kiota.Authentication.Azure" Version="[1.1.7, 2.0.0)" />
69-
<PackageReference Include="Microsoft.Kiota.Serialization.Json" Version="[1.3.3, 2.0.0)" />
70-
<PackageReference Include="Microsoft.Kiota.Serialization.Text" Version="[1.2.2, 2.0.0)" />
71-
<PackageReference Include="Microsoft.Kiota.Serialization.Form" Version="[1.2.5, 2.0.0)" />
72-
<PackageReference Include="Microsoft.Kiota.Http.HttpClientLibrary" Version="[1.4.3, 2.0.0)" />
73-
<PackageReference Include="Microsoft.Kiota.Serialization.Multipart" Version="[1.1.5, 2.0.0)" />
67+
<PackageReference Include="Microsoft.Kiota.Abstractions" Version="1.9.11" />
68+
<PackageReference Include="Microsoft.Kiota.Authentication.Azure" Version="1.9.11" />
69+
<PackageReference Include="Microsoft.Kiota.Serialization.Json" Version="1.9.11" />
70+
<PackageReference Include="Microsoft.Kiota.Serialization.Text" Version="1.9.11" />
71+
<PackageReference Include="Microsoft.Kiota.Serialization.Form" Version="1.9.11" />
72+
<PackageReference Include="Microsoft.Kiota.Http.HttpClientLibrary" Version="1.9.11" />
73+
<PackageReference Include="Microsoft.Kiota.Serialization.Multipart" Version="1.9.11" />
7474
</ItemGroup>
7575
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
7676
<PackageReference Include="System.Net.Http.WinHttpHandler" Version="[6.0,9.0)" />

src/Microsoft.Graph.Core/Requests/GraphClientFactory.cs

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,6 @@ public static IList<DelegatingHandler> CreateDefaultHandlers(GraphClientOptions
117117
var handlers = KiotaClientFactory.CreateDefaultHandlers();
118118
handlers.Add(new GraphTelemetryHandler(graphClientOptions));// add the telemetry handler last.
119119

120-
// TODO remove this once https://github.com/microsoft/kiota/issues/598 is closed.
121-
handlers.Insert(0, new CompressionHandler());
122-
123120
return handlers;
124121
}
125122

@@ -220,17 +217,17 @@ internal static HttpMessageHandler GetNativePlatformHttpHandler(IWebProxy proxy
220217
#elif MACOS
221218
return new Foundation.NSUrlSessionHandler { AllowAutoRedirect = false };
222219
#elif ANDROID
223-
return new Xamarin.Android.Net.AndroidMessageHandler { Proxy = proxy, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.None };
220+
return new Xamarin.Android.Net.AndroidMessageHandler { Proxy = proxy, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.All };
224221
#elif NETFRAMEWORK
225222
// If custom proxy is passed, the WindowsProxyUsePolicy will need updating
226223
// https://github.com/dotnet/runtime/blob/main/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs#L575
227224
var proxyPolicy = proxy != null ? WindowsProxyUsePolicy.UseCustomProxy : WindowsProxyUsePolicy.UseWinHttpProxy;
228-
return new WinHttpHandler { Proxy = proxy, AutomaticDecompression = DecompressionMethods.None , WindowsProxyUsePolicy = proxyPolicy, SendTimeout = Timeout.InfiniteTimeSpan, ReceiveDataTimeout = Timeout.InfiniteTimeSpan, ReceiveHeadersTimeout = Timeout.InfiniteTimeSpan };
225+
return new WinHttpHandler { Proxy = proxy, AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate , WindowsProxyUsePolicy = proxyPolicy, SendTimeout = Timeout.InfiniteTimeSpan, ReceiveDataTimeout = Timeout.InfiniteTimeSpan, ReceiveHeadersTimeout = Timeout.InfiniteTimeSpan };
229226
#elif NET6_0_OR_GREATER
230227
//use resilient configs when we can https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-5.0#alternatives-to-ihttpclientfactory-1
231-
return new SocketsHttpHandler { Proxy = proxy, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.None, PooledConnectionLifetime = TimeSpan.FromMinutes(1)};
228+
return new SocketsHttpHandler { Proxy = proxy, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.All, PooledConnectionLifetime = TimeSpan.FromMinutes(1)};
232229
#else
233-
return new HttpClientHandler { Proxy = proxy, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.None };
230+
return new HttpClientHandler { Proxy = proxy, AllowAutoRedirect = false, AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate };
234231
#endif
235232
}
236233

@@ -241,14 +238,16 @@ internal static HttpMessageHandler GetNativePlatformHttpHandler(IWebProxy proxy
241238
/// <returns>Delegating handler feature flag.</returns>
242239
private static FeatureFlag GetHandlerFeatureFlag(DelegatingHandler delegatingHandler)
243240
{
244-
if (delegatingHandler is CompressionHandler)
245-
return FeatureFlag.CompressionHandler;
246-
else if (delegatingHandler is RetryHandler)
247-
return FeatureFlag.RetryHandler;
248-
else if (delegatingHandler is RedirectHandler)
249-
return FeatureFlag.RedirectHandler;
250-
else
251-
return FeatureFlag.None;
241+
return delegatingHandler switch
242+
{
243+
// Type or member is obsolete
244+
#pragma warning disable CS0618 // Type or member is obsolete
245+
CompressionHandler => FeatureFlag.CompressionHandler,
246+
#pragma warning restore CS0618 // Type or member is obsolete
247+
RetryHandler => FeatureFlag.RetryHandler,
248+
RedirectHandler => FeatureFlag.RedirectHandler,
249+
_ => FeatureFlag.None
250+
};
252251
}
253252

254253
private static Uri DetermineBaseAddress(string nationalCloud, string version)

tests/Microsoft.Graph.DotnetCore.Core.Test/Requests/GraphClientFactoryTests.cs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ public void Should_CreatePipeline_Without_CompressionHandler()
6969
[Fact]
7070
public void Should_CreatePipeline_Without_HttpMessageHandlerInput()
7171
{
72-
using CompressionHandler compressionHandler = (CompressionHandler)GraphClientFactory.CreatePipeline(handlers, new MockRedirectHandler());
73-
using UriReplacementHandler<UriReplacementHandlerOption> uriReplacementHandler = (UriReplacementHandler<UriReplacementHandlerOption>)compressionHandler.InnerHandler;
72+
using UriReplacementHandler<UriReplacementHandlerOption> uriReplacementHandler = (UriReplacementHandler<UriReplacementHandlerOption>)GraphClientFactory.CreatePipeline(handlers, new MockRedirectHandler());
7473
using RetryHandler retryHandler = (RetryHandler)uriReplacementHandler.InnerHandler;
7574
using RedirectHandler redirectHandler = (RedirectHandler)retryHandler.InnerHandler;
7675
using ParametersNameDecodingHandler odataQueryHandler = (ParametersNameDecodingHandler)redirectHandler.InnerHandler;
@@ -83,14 +82,12 @@ public void Should_CreatePipeline_Without_HttpMessageHandlerInput()
8382
Assert.NotNull(userAgentHandler);
8483
Assert.NotNull(headersInspectionHandler);
8584
Assert.NotNull(odataQueryHandler);
86-
Assert.NotNull(compressionHandler);
8785
Assert.NotNull(retryHandler);
8886
Assert.NotNull(redirectHandler);
8987
Assert.NotNull(innerMost);
9088
Assert.IsType<GraphTelemetryHandler>(telemetryHandler);
9189
Assert.IsType<ParametersNameDecodingHandler>(odataQueryHandler);
9290
Assert.IsType<HeadersInspectionHandler>(headersInspectionHandler);
93-
Assert.IsType<CompressionHandler>(compressionHandler);
9491
Assert.IsType<UserAgentHandler>(userAgentHandler);
9592
Assert.IsType<RetryHandler>(retryHandler);
9693
Assert.IsType<RedirectHandler>(redirectHandler);
@@ -101,8 +98,7 @@ public void Should_CreatePipeline_Without_HttpMessageHandlerInput()
10198
[Fact]
10299
public void CreatePipelineWithHttpMessageHandlerInput()
103100
{
104-
using CompressionHandler compressionHandler = (CompressionHandler)GraphClientFactory.CreatePipeline(handlers, new MockRedirectHandler());
105-
using UriReplacementHandler<UriReplacementHandlerOption> uriReplacementHandler = (UriReplacementHandler<UriReplacementHandlerOption>)compressionHandler.InnerHandler;
101+
using UriReplacementHandler<UriReplacementHandlerOption> uriReplacementHandler = (UriReplacementHandler<UriReplacementHandlerOption>)GraphClientFactory.CreatePipeline(handlers, new MockRedirectHandler());
106102
using RetryHandler retryHandler = (RetryHandler)uriReplacementHandler.InnerHandler;
107103
using RedirectHandler redirectHandler = (RedirectHandler)retryHandler.InnerHandler;
108104
using ParametersNameDecodingHandler odataQueryHandler = (ParametersNameDecodingHandler)redirectHandler.InnerHandler;
@@ -115,14 +111,12 @@ public void CreatePipelineWithHttpMessageHandlerInput()
115111
Assert.NotNull(userAgentHandler);
116112
Assert.NotNull(headersInspectionHandler);
117113
Assert.NotNull(odataQueryHandler);
118-
Assert.NotNull(compressionHandler);
119114
Assert.NotNull(retryHandler);
120115
Assert.NotNull(redirectHandler);
121116
Assert.NotNull(innerMost);
122117
Assert.IsType<GraphTelemetryHandler>(telemetryHandler);
123118
Assert.IsType<ParametersNameDecodingHandler>(odataQueryHandler);
124119
Assert.IsType<HeadersInspectionHandler>(headersInspectionHandler);
125-
Assert.IsType<CompressionHandler>(compressionHandler);
126120
Assert.IsType<RetryHandler>(retryHandler);
127121
Assert.IsType<UserAgentHandler>(userAgentHandler);
128122
Assert.IsType<RedirectHandler>(redirectHandler);
@@ -143,11 +137,11 @@ public void CreatePipelineWithoutPipeline()
143137
public void CreatePipeline_Should_Throw_Exception_With_Duplicate_Handlers()
144138
{
145139
var handlers = GraphClientFactory.CreateDefaultHandlers();
146-
handlers.Add(new CompressionHandler());
140+
handlers.Add(new GraphTelemetryHandler());
147141

148142
ArgumentException exception = Assert.Throws<ArgumentException>(() => GraphClientFactory.CreatePipeline(handlers));
149143

150-
Assert.Contains($"{typeof(CompressionHandler)} has a duplicate handler.", exception.Message);
144+
Assert.Contains($"{typeof(GraphTelemetryHandler)} has a duplicate handler.", exception.Message);
151145
}
152146

153147
[Fact]
@@ -281,7 +275,7 @@ public void CreateClient_WithInnerHandlerReference()
281275
[Fact]
282276
public void CreatePipelineWithFeatureFlags_Should_Set_FeatureFlag_For_Default_Handlers()
283277
{
284-
FeatureFlag expectedFlag = FeatureFlag.CompressionHandler | FeatureFlag.RetryHandler | FeatureFlag.RedirectHandler;
278+
FeatureFlag expectedFlag = FeatureFlag.RetryHandler | FeatureFlag.RedirectHandler;
285279
string expectedFlagHeaderValue = Enum.Format(typeof(FeatureFlag), expectedFlag, "x");
286280
var handlers = GraphClientFactory.CreateDefaultHandlers();
287281
var pipelineWithHandlers = GraphClientFactory.CreatePipelineWithFeatureFlags(handlers);
@@ -293,7 +287,7 @@ public void CreatePipelineWithFeatureFlags_Should_Set_FeatureFlag_For_Default_Ha
293287
[Fact]
294288
public void CreatePipelineWithFeatureFlags_Should_Set_FeatureFlag_For_Speficied_Handlers()
295289
{
296-
FeatureFlag expectedFlag = FeatureFlag.CompressionHandler | FeatureFlag.RetryHandler;
290+
FeatureFlag expectedFlag = FeatureFlag.RetryHandler;
297291
var handlers = GraphClientFactory.CreateDefaultHandlers();
298292
//Exclude the redirect handler for this test
299293
handlers = handlers.Where(handler => !handler.GetType().Equals(typeof(RedirectHandler))).ToList();

0 commit comments

Comments
 (0)