public OctorunTask(CancellationToken token, IKeychain keychain, IEnvironment environment, string arguments, IOutputProcessor <OctorunResult> processor = null) : base(token, processor ?? new OctorunResultOutputProcessor()) { this.clientId = ApplicationInfo.ClientId; this.clientSecret = ApplicationInfo.ClientSecret; this.pathToNodeJs = environment.NodeJsExecutablePath; this.pathToOctorunJs = environment.OctorunScriptPath; this.arguments = $"\"{pathToOctorunJs}\" {arguments}"; var cloneUrl = environment.Repository?.CloneUrl; var host = String.IsNullOrEmpty(cloneUrl) ? UriString.ToUriString(HostAddress.GitHubDotComHostAddress.WebUri) : new UriString(cloneUrl.ToRepositoryUri() .GetComponents(UriComponents.SchemeAndServer, UriFormat.SafeUnescaped)); var adapter = keychain.Connect(host); if (adapter.Credential?.Token != null) { userToken = adapter.Credential.Token; } else { // use a cached adapter if there is one filled out adapter = keychain.LoadFromSystem(host); if (adapter != null) { userToken = adapter.Credential.Token; } } }
private IKeychainAdapter GetValidatedKeychainAdapter(Connection keychainConnection) { var keychainAdapter = keychain.LoadFromSystem(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); }