public async Task <IKeychainAdapter> Load(UriString host) { KeychainAdapter keychainAdapter = FindOrCreateAdapter(host); var cachedConnection = connectionCache[host]; logger.Trace($@"Loading KeychainAdapter Host:""{host}"" Cached Username:""{cachedConnection.Username}"""); var keychainItem = await credentialManager.Load(host); if (keychainItem == null) { logger.Warning("Cannot load host from Credential Manager; removing from cache"); await Clear(host, false); } else { if (keychainItem.Username != cachedConnection.Username) { logger.Warning("Keychain Username: {0} does not match; Hopefully it works", keychainItem.Username); } logger.Trace("Loaded from Credential Manager Host:\"{0}\" Username:\"{1}\"", keychainItem.Host, keychainItem.Username); keychainAdapter.Set(keychainItem); } return(keychainAdapter); }
private KeychainAdapter FindOrCreateAdapter(UriString host) { KeychainAdapter value; if (!keychainAdapters.TryGetValue(host, out value)) { value = new KeychainAdapter(); keychainAdapters.Add(host, value); } return(value); }