summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs')
-rw-r--r--src/DotNetOpenAuth.OpenId/DefaultOpenIdHostFactories.cs54
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);
+ }
+ }
+ }
+}