예제 #1
0
        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()));
            }
        }
예제 #2
0
        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);
                }
            }
        }