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; } } }