private async Task<bool> LoadKeychainInternal() { if (keychain.HasKeys) { if (!keychain.NeedsLoad) { logger.Trace("LoadKeychainInternal: Previously Loaded"); return true; } logger.Trace("LoadKeychainInternal: Loading"); //TODO: ONE_USER_LOGIN This assumes only ever one user can login var uriString = keychain.Connections.First().Host; var keychainAdapter = await keychain.Load(uriString); logger.Trace("LoadKeychainInternal: Loaded"); return keychainAdapter.OctokitCredentials != Credentials.Anonymous; } logger.Trace("LoadKeychainInternal: No keys to load"); return false; }
private async Task <IKeychainAdapter> GetValidatedKeychainAdapter(Connection keychainConnection) { var keychainAdapter = await keychain.Load(keychainConnection.Host); if (keychainAdapter == null) { throw new KeychainEmptyException(); } if (string.IsNullOrEmpty(keychainAdapter.Credential?.Username)) { logger.Warning("LoadKeychainInternal: Username is empty"); throw new TokenUsernameMismatchException(keychainConnection.Username); } if (keychainAdapter.Credential.Username != keychainConnection.Username) { logger.Warning("LoadKeychainInternal: Token username does not match"); } return(keychainAdapter); }
/// <summary> /// This is a callback from libgit2 /// </summary> /// <returns></returns> public Credentials HandleCredentials(string url, string username, SupportedCredentialTypes types) { if (url == null) { return(null); // wondering if we should return DefaultCredentials instead } var host = HostAddress.Create(url); try { var credentials = JoinableTaskContext.Factory.Run(async() => await keychain.Load(host)); return(new UsernamePasswordCredentials { Username = credentials.Item1, Password = credentials.Item2, }); } catch (Exception e) { log.Error(e, "Error loading credentials in GitHubCredentialProvider"); return(null); } }
private async Task <bool> EnsureKeychainLoaded() { logger.Trace("EnsureKeychainLoaded"); if (keychain.HasKeys) { if (!keychain.NeedsLoad) { logger.Trace("EnsureKeychainLoaded: Has keys does not need load"); return(true); } logger.Trace("EnsureKeychainLoaded: Loading"); var uriString = keychain.Connections.First().Host; var keychainAdapter = await keychain.Load(uriString); return(keychainAdapter.OctokitCredentials != Credentials.Anonymous); } logger.Trace("EnsureKeychainLoaded: No keys to load"); return(false); }
public async Task <string> GetCredentials() { var userPass = await keychain.Load(address).ConfigureAwait(false); return(userPass?.Item2); }
private async Task <GitHubRepository> CreateRepositoryInternal(string repositoryName, string organization, string description, bool isPrivate) { try { logger.Trace("Creating repository"); await ValidateKeychain(); await ValidateCurrentUserInternal(); var uriString = keychain.Connections.First().Host; var keychainAdapter = await keychain.Load(uriString); var command = new StringBuilder("publish -r \""); command.Append(repositoryName); command.Append("\""); if (!string.IsNullOrEmpty(description)) { command.Append(" -d \""); command.Append(description); command.Append("\""); } if (!string.IsNullOrEmpty(organization)) { command.Append(" -o \""); command.Append(organization); command.Append("\""); } if (isPrivate) { command.Append(" -p"); } var octorunTask = new OctorunTask(taskManager.Token, nodeJsExecutablePath, octorunScriptPath, command.ToString(), user: keychainAdapter.Credential.Username, userToken: keychainAdapter.Credential.Token) .Configure(processManager); var ret = await octorunTask.StartAwait(); if (ret.IsSuccess && ret.Output.Length == 2) { return(new GitHubRepository { Name = ret.Output[0], CloneUrl = ret.Output[1] }); } if (ret.Output.Any()) { throw new ApiClientException(string.Join(Environment.NewLine, ret.Output)); } throw new ApiClientException("Publish failed"); } catch (Exception ex) { logger.Error(ex, "Error Creating Repository"); throw; } }
public async Task <string> GetCredentials(CancellationToken cancellationToken = default) { var userPass = await keychain.Load(address).ConfigureAwait(false); return(userPass?.Item2); }
public async Task <Credentials> GetCredentials() { var userPass = await keychain.Load(address).ConfigureAwait(false); return(userPass != null ? new Credentials(userPass.Item1, userPass.Item2) : Credentials.Anonymous); }