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 EditHosting() { if (tree.SelectedNode == null) { return; } var current = (Node <OAuthCredentials>)tree.SelectedNode.Tag; if (current.Value.Service == null || services.IsContainsManager(current.Value.Service)) { var credentials = await OAuthCredentialsEditor.ShowNew(current.Value, services.Managers.ToArray()); if (credentials.HasBeenCanceled) { return; } current.Value = credentials; UpdateNode(tree.SelectedNode); } }
public static bool IsValid(this Node <OAuthCredentials> credentials, ServicesCollection services) { var serviceName = credentials.Value.Service; if (serviceName == null) { return(false); } if (!services.IsContains(serviceName)) { return(false); } if (services.IsContainsManager(serviceName)) { return(credentials.IsLeaf && credentials.Value.Token != null); } else { return(credentials.IsNode && credentials.Nested.All(n => n.IsValid(services))); } }