Exemplo n.º 1
0
        private bool ValidateTopRequestItems(TopRequestItems topItems)
        {
            // If there is a default query, it should be single one, and there should be no other ops in the request, only fragments;
            // and opName should not be specified
            if (topItems.AnonymousQueries.Count > 1)
            {
                var aq1 = topItems.AnonymousQueries[1];
                AddError("The request may not contain more than one default (anonymous) query", aq1);
                return(false);
            }
            if (topItems.AnonymousQueries.Count > 0)
            {
                topItems.DefaultQuery = topItems.AnonymousQueries[0];
                if (topItems.Operations.Count > 0)
                {
                    var op0 = topItems.Operations[0];
                    AddError("If the request contains a default (anonymous) query, it cannot contain any other operations.", op0);
                    return(false);
                }
            }
            if (topItems.DefaultQuery == null)
            {
                if (topItems.Operations.Count == 0)
                {
                    AddError("The query contains no default query or operations.", null);
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        private TopRequestItems GetTopRequestItems(ParseTreeNode requestDoc)
        {
            var topItems = new TopRequestItems();
            // query contains operation(s), anonymous ops, and fragment definitions
            var elemListNode = requestDoc.FindChild(TermNames.RequestElemList);

            if (elemListNode == null)
            {
                return(topItems);
            }
            foreach (var node in elemListNode.ChildNodes)
            {
                switch (node.Term.Name)
                {
                case TermNames.FragmDef:
                    topItems.Fragments.Add(node);
                    break;

                case TermNames.RequestOp:
                    topItems.Operations.Add(node);
                    break;

                case TermNames.DefaultQuery:
                    topItems.AnonymousQueries.Add(node);
                    break;
                }
            }
            return(topItems);
        }