public IHosting FromCredentials(Node <OAuthCredentials> root) { var serviceName = root.Value.Service; if (root.Value?.Service == null) { throw new NullReferenceException("Unexpected service name"); } if (root.IsLeaf) { if (!collection.IsContainsManager(serviceName)) { throw new InvalidOperationException($"Unexpected service '{serviceName}'"); } var service = collection.GetManager(serviceName); return(service.GetFileHostingFor(root.Value)); } else { if (!collection.IsContainsMultiHostingManager(serviceName)) { throw new InvalidOperationException($"Unexpected multihosting manager '{serviceName}'"); } var service = collection.GetMultiHostingManager(serviceName); return(service.GetFileHostingFor(root.Nested.Select(FromCredentials).ToArray())); } }
private async void NewHosting() { var curent = tree.SelectedNode; var node = ((Node <OAuthCredentials>)tree.SelectedNode?.Tag); if (curent == null) { var credentials = await OAuthCredentialsEditor.ShowNew(services.Managers.ToArray()); if (credentials.HasBeenCanceled) { return; } result.Value = new Node <OAuthCredentials>(credentials); Update(); } else if (node?.Value.Service != null) { if (services.IsContainsMultiHostingManager(node.Value.Service)) { var credentials = await OAuthCredentialsEditor.ShowNew(services.Managers.ToArray()); if (credentials.HasBeenCanceled) { return; } var n = new Node <OAuthCredentials>(credentials); node.Nested.Add(n); var tn = new TreeNode { Tag = n }; curent.Nodes.Add(tn); UpdateNode(tn); } } }