using System;
using LibGit2Sharp.Core;
using LibGit2Sharp.Handlers;
namespace LibGit2Sharp
{
///
/// Class that holds credentials for remote repository access.
///
public abstract class Credentials
{
///
/// Callback to acquire a credential object.
///
/// The newly created credential object.
/// The resource for which we are demanding a credential.
/// The username that was embedded in a "user@host"
/// A bitmask stating which cred types are OK to return.
/// The payload provided when specifying this callback.
/// 0 for success, < 0 to indicate an error, > 0 to indicate no credential was acquired.
protected internal abstract int GitCredentialHandler(out IntPtr cred, IntPtr url, IntPtr usernameFromUrl, GitCredentialType types, IntPtr payload);
}
internal interface ICredentialsProvider
{
///
/// Handler to generate for authentication.
///
CredentialsHandler CredentialsProvider { get; }
}
internal static class CredentialsProviderExtensions
{
public static CredentialsHandler GetCredentialsHandler(this ICredentialsProvider provider)
{
if (provider == null)
{
return null;
}
if (provider.CredentialsProvider == null)
{
return null;
}
return provider.CredentialsProvider;
}
}
}