diff options
Diffstat (limited to 'src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs')
-rw-r--r-- | src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs b/src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs new file mode 100644 index 0000000..18ad727 --- /dev/null +++ b/src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +// <copyright file="DefaultHostFactories.cs" company="Andrew Arnott"> +// Copyright (c) Andrew Arnott. All rights reserved. +// </copyright> +//----------------------------------------------------------------------- + +namespace DotNetOpenAuth.OpenId { + using System; + using System.Collections.Generic; + using System.Linq; + using System.Net.Cache; + using System.Net.Http; + using System.Text; + using System.Threading.Tasks; + + /// <summary> + /// Creates default instances of required dependencies. + /// </summary> + public class DefaultOpenIdHostFactories : IHostFactories { + /// <summary> + /// Initializes a new instance of a concrete derivation of <see cref="HttpMessageHandler" /> + /// to be used for outbound HTTP traffic. + /// </summary> + /// <returns>An instance of <see cref="HttpMessageHandler"/>.</returns> + /// <remarks> + /// An instance of <see cref="WebRequestHandler" /> is recommended where available; + /// otherwise an instance of <see cref="HttpClientHandler" /> is recommended. + /// </remarks> + public virtual HttpMessageHandler CreateHttpMessageHandler() { + var handler = new UntrustedWebRequestHandler(); + handler.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); + return handler; + } + + /// <summary> + /// Initializes a new instance of the <see cref="HttpClient" /> class + /// to be used for outbound HTTP traffic. + /// </summary> + /// <param name="handler">The handler to pass to the <see cref="HttpClient" /> constructor. + /// May be null to use the default that would be provided by <see cref="CreateHttpMessageHandler" />.</param> + /// <returns> + /// An instance of <see cref="HttpClient" />. + /// </returns> + public HttpClient CreateHttpClient(HttpMessageHandler handler) { + handler = handler ?? this.CreateHttpMessageHandler(); + var untrustedHandler = handler as UntrustedWebRequestHandler; + if (untrustedHandler != null) { + return untrustedHandler.CreateClient(); + } else { + return new HttpClient(handler); + } + } + } +} |