diff options
Diffstat (limited to 'src/DotNetOpenAuth.OpenId/OpenId/IIdentifierDiscoveryService.cs')
-rw-r--r-- | src/DotNetOpenAuth.OpenId/OpenId/IIdentifierDiscoveryService.cs | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/src/DotNetOpenAuth.OpenId/OpenId/IIdentifierDiscoveryService.cs b/src/DotNetOpenAuth.OpenId/OpenId/IIdentifierDiscoveryService.cs index 20b8f1c..1055d15 100644 --- a/src/DotNetOpenAuth.OpenId/OpenId/IIdentifierDiscoveryService.cs +++ b/src/DotNetOpenAuth.OpenId/OpenId/IIdentifierDiscoveryService.cs @@ -10,7 +10,11 @@ namespace DotNetOpenAuth.OpenId { using System.Diagnostics.CodeAnalysis; using System.Diagnostics.Contracts; using System.Linq; + using System.Net.Http; + using System.Runtime.CompilerServices; using System.Text; + using System.Threading; + using System.Threading.Tasks; using DotNetOpenAuth.Messaging; using DotNetOpenAuth.OpenId.RelyingParty; using Validation; @@ -23,13 +27,38 @@ namespace DotNetOpenAuth.OpenId { /// Performs discovery on the specified identifier. /// </summary> /// <param name="identifier">The identifier to perform discovery on.</param> - /// <param name="requestHandler">The means to place outgoing HTTP requests.</param> - /// <param name="abortDiscoveryChain">if set to <c>true</c>, no further discovery services will be called for this identifier.</param> + /// <param name="cancellationToken">The cancellation token.</param> /// <returns> /// A sequence of service endpoints yielded by discovery. Must not be null, but may be empty. /// </returns> [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "2#", Justification = "By design")] - [Pure] - IEnumerable<IdentifierDiscoveryResult> Discover(Identifier identifier, IDirectWebRequestHandler requestHandler, out bool abortDiscoveryChain); + Task<IdentifierDiscoveryServiceResult> DiscoverAsync(Identifier identifier, CancellationToken cancellationToken); + } + + /// <summary> + /// Describes the result of <see cref="IIdentifierDiscoveryService.DiscoverAsync"/>. + /// </summary> + public class IdentifierDiscoveryServiceResult { + /// <summary> + /// Initializes a new instance of the <see cref="IdentifierDiscoveryServiceResult" /> class. + /// </summary> + /// <param name="results">The results.</param> + /// <param name="abortDiscoveryChain">if set to <c>true</c>, no further discovery services will be called for this identifier.</param> + public IdentifierDiscoveryServiceResult(IEnumerable<IdentifierDiscoveryResult> results, bool abortDiscoveryChain = false) { + Requires.NotNull(results, "results"); + + this.Results = results; + this.AbortDiscoveryChain = abortDiscoveryChain; + } + + /// <summary> + /// Gets the results from this individual discovery service. + /// </summary> + public IEnumerable<IdentifierDiscoveryResult> Results { get; private set; } + + /// <summary> + /// Gets a value indicating whether no further discovery services should be called for this identifier. + /// </summary> + public bool AbortDiscoveryChain { get; private set; } } } |