//-----------------------------------------------------------------------
//
// Copyright (c) Outercurve Foundation. All rights reserved.
//
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.OpenId.RelyingParty {
using System;
using System.Collections.ObjectModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OpenId.Messages;
///
/// Information published about an OpenId Provider by the
/// OpenId discovery documents found at a user's Claimed Identifier.
///
///
/// Because information provided by this interface is suppplied by a
/// user's individually published documents, it may be incomplete or inaccurate.
///
public interface IProviderEndpoint {
///
/// Gets the detected version of OpenID implemented by the Provider.
///
Version Version { get; }
///
/// Gets the URL that the OpenID Provider receives authentication requests at.
///
///
/// This value MUST be an absolute HTTP or HTTPS URL.
///
Uri Uri { get; }
///
/// Checks whether the OpenId Identifier claims support for a given extension.
///
/// The extension whose support is being queried.
/// True if support for the extension is advertised. False otherwise.
///
/// Note that a true or false return value is no guarantee of a Provider's
/// support for or lack of support for an extension. The return value is
/// determined by how the authenticating user filled out his/her XRDS document only.
/// The only way to be sure of support for a given extension is to include
/// the extension in the request and see if a response comes back for that extension.
///
[SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "No parameter at all.")]
[Obsolete("Use IAuthenticationRequest.DiscoveryResult.IsExtensionSupported instead.")]
bool IsExtensionSupported() where T : IOpenIdMessageExtension, new();
///
/// Checks whether the OpenId Identifier claims support for a given extension.
///
/// The extension whose support is being queried.
/// True if support for the extension is advertised. False otherwise.
///
/// Note that a true or false return value is no guarantee of a Provider's
/// support for or lack of support for an extension. The return value is
/// determined by how the authenticating user filled out his/her XRDS document only.
/// The only way to be sure of support for a given extension is to include
/// the extension in the request and see if a response comes back for that extension.
///
[Obsolete("Use IAuthenticationRequest.DiscoveryResult.IsExtensionSupported instead.")]
bool IsExtensionSupported(Type extensionType);
}
}