コード例 #1
0
        private static Dictionary <string, Dictionary <string, object> > ProcessResponse(
            Dictionary <string, Dictionary <string, object> > accumulator,
            PageLoadResponse pageLoad,
            List <MboxResponse> mboxes,
            string globalMbox)
        {
            if (pageLoad != null)
            {
                accumulator = AddOptions(accumulator, pageLoad.Options, globalMbox);
            }

            if (mboxes == null || mboxes.Count == 0)
            {
                return(accumulator);
            }

            for (var i = mboxes.Count - 1; i >= 0; i--)
            {
                var mbox = mboxes[i];
                if (mbox == null)
                {
                    continue;
                }

                accumulator = AddOptions(accumulator, mbox.Options, mbox.Name);
            }

            return(accumulator);
        }
コード例 #2
0
        private static bool HandlePageLoad(
            PrefetchResponse prefetchResponse,
            ExecuteResponse executeResponse,
            IList <Option> consequenceOptions,
            IList <Metric> consequenceMetrics,
            TraceHandler traceHandler)
        {
            PageLoadResponse pageLoad = null;

            if (prefetchResponse != null)
            {
                prefetchResponse.PageLoad ??= new PageLoadResponse();
                pageLoad = prefetchResponse.PageLoad;
            }
            else if (executeResponse != null)
            {
                executeResponse.PageLoad ??= new PageLoadResponse();
                pageLoad = executeResponse.PageLoad;
            }

            if (pageLoad == null)
            {
                return(false);
            }

            pageLoad.Trace = traceHandler?.CurrentTrace;

            if (consequenceOptions != null)
            {
                foreach (var option in consequenceOptions)
                {
                    if (executeResponse != null)
                    {
                        option.EventToken = null;
                    }

                    if (option.Type == null && option.Content == null && option.EventToken == null && option.ResponseTokens == null)
                    {
                        continue;
                    }

                    pageLoad.Options ??= new List <Option>();
                    pageLoad.Options.Add(option);
                }
            }

            if (consequenceMetrics == null)
            {
                return(true);
            }

            foreach (var metric in consequenceMetrics
                     .Where(metric => pageLoad.Metrics == null || !pageLoad.Metrics.Contains(metric)))
            {
                pageLoad.Metrics ??= new List <Metric>();
                pageLoad.Metrics.Add(metric);
            }

            return(true);
        }
        private static object UnhandledPageLoadResponse(PrefetchResponse prefetchResponse, ExecuteResponse executeResponse)
        {
            var response = new PageLoadResponse();

            if (prefetchResponse != null)
            {
                prefetchResponse.PageLoad = response;
                return(null);
            }

            executeResponse.PageLoad = response;
            return(null);
        }
コード例 #4
0
        private static object UnhandledPageLoadResponse(
            PrefetchResponse prefetchResponse,
            ExecuteResponse executeResponse,
            TraceHandler traceHandler)
        {
            var response = new PageLoadResponse {
                Trace = traceHandler?.CurrentTrace
            };

            if (prefetchResponse != null)
            {
                prefetchResponse.PageLoad = response;
                return(null);
            }

            executeResponse.PageLoad = response;
            return(null);
        }