示例#1
0
        public IGraphQLRequest Build()
        {
            // Replace tags in graphQL query.
            ReplaceTag("customMetaArgs",
                       string.IsNullOrEmpty(_customMetaFilter) ? "" : $"(filter: \"{_customMetaFilter}\")");

            ReplaceTag("renderContentArgs",
                       $"(renderContent: {(_contentIncludeMode == ContentIncludeMode.IncludeDataAndRender || _contentIncludeMode == ContentIncludeMode.IncludeJsonAndRender ? "true" : "false")})");

            if (_variables != null)
            {
                ReplaceTag("variantsArgs", _variables.ContainsKey("url") ? $"(url: \"{_variables["url"]}\")" : "");
            }

            var query = QueryHelpers.ParseIncludeRegions(_query.ToString(), "includeContent",
                                                         _contentIncludeMode == ContentIncludeMode.IncludeData || _contentIncludeMode == ContentIncludeMode.IncludeDataAndRender);

            query = QueryHelpers.ParseIncludeRegions(query, "includeJsonContent",
                                                     _contentIncludeMode == ContentIncludeMode.IncludeJson || _contentIncludeMode == ContentIncludeMode.IncludeJsonAndRender);

            QueryHelpers.ExpandRecursiveFragment(ref query, null, _descendantLevels);

            QueryHelpers.RemoveUnusedFragments(ref query);

            if (_contextData != null)
            {
                WithVariable("contextData", _contextData.ClaimValues);
            }

            return(new GraphQLRequest
            {
                OperationName = _operationName,
                Query = query,
                Variables = _variables,
                Convertors = _convertors
            });
        }