#if !BESTHTTP_DISABLE_SIGNALR_CORE && !BESTHTTP_DISABLE_WEBSOCKET
using System;
namespace BestHTTP.SignalRCore
{
public delegate void OnAuthenticationSuccededDelegate(IAuthenticationProvider provider);
public delegate void OnAuthenticationFailedDelegate(IAuthenticationProvider provider, string reason);
public interface IAuthenticationProvider
{
///
/// The authentication must be run before any request made to build up the SignalR protocol
///
bool IsPreAuthRequired { get; }
///
/// This event must be called when the pre-authentication succeded. When IsPreAuthRequired is false, no-one will subscribe to this event.
///
event OnAuthenticationSuccededDelegate OnAuthenticationSucceded;
///
/// This event must be called when the pre-authentication failed. When IsPreAuthRequired is false, no-one will subscribe to this event.
///
event OnAuthenticationFailedDelegate OnAuthenticationFailed;
///
/// This function called once, when the before the SignalR negotiation begins. If IsPreAuthRequired is false, then this step will be skipped.
///
void StartAuthentication();
///
/// This function will be called for every request before sending it.
///
void PrepareRequest(HTTPRequest request);
///
/// This function can customize the given uri. If there's no intention to modify the uri, this function
/// should return with the parameter.
///
Uri PrepareUri(Uri uri);
}
}
#endif