示例#1
0
        public object Get()
        {
            IEnumerable <Request> requests = null;

            //
            // Filter by WorkerProcess
            string wpUuid = Context.Request.Query[Defines.WP_IDENTIFIER];

            if (!string.IsNullOrEmpty(wpUuid))
            {
                WorkerProcess wp = WorkerProcessHelper.GetWorkerProcess(new WorkerProcessId(wpUuid).Id);
                if (wp == null)
                {
                    return(NotFound());
                }

                requests = RequestHelper.GetRequests(wp, Context.Request.GetFilter());
            }

            //
            // Filter by Site
            if (requests == null)
            {
                string siteUuid = Context.Request.Query[Sites.Defines.IDENTIFIER];

                if (!string.IsNullOrEmpty(siteUuid))
                {
                    Site site = SiteHelper.GetSite(new SiteId(siteUuid).Id);

                    if (site == null)
                    {
                        return(NotFound());
                    }

                    requests = RequestHelper.GetRequests(site, Context.Request.GetFilter());
                }
            }

            //
            // Get all
            if (requests == null)
            {
                requests = RequestHelper.GetRequests(Context.Request.GetFilter());
            }

            //
            // Set HTTP header for total count
            this.Context.Response.SetItemsCount(requests.Count());

            Fields fields = Context.Request.GetFields();

            return(new {
                requests = requests.Select(r => RequestHelper.ToJsonModelRef(r, fields))
            });
        }
示例#2
0
        public object Get(string id)
        {
            var reqId = new RequestId(id);

            WorkerProcess wp = WorkerProcessHelper.GetWorkerProcess(reqId.ProcessId);

            if (wp == null)
            {
                return(NotFound());
            }

            Request request = RequestHelper.GetRequest(wp, reqId.Id);

            if (request == null)
            {
                return(NotFound());
            }

            return(RequestHelper.ToJsonModel(request, Context.Request.GetFields()));
        }
        internal static object ToJsonModel(Request request, Fields fields = null, bool full = true)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (fields == null)
            {
                fields = Fields.All;
            }

            dynamic obj = new ExpandoObject();

            //
            // url
            if (fields.Exists("url"))
            {
                obj.url = request.Url;
            }

            //
            // id
            obj.id = new RequestId(request.ProcessId, request.RequestId).Uuid;

            //
            // method
            if (fields.Exists("method"))
            {
                obj.method = request.Verb;
            }

            //
            // host_name
            if (fields.Exists("host_name"))
            {
                obj.host_name = request.HostName;
            }

            //
            // client_ip
            if (fields.Exists("client_ip_address"))
            {
                obj.client_ip_address = request.ClientIPAddr;
            }

            //
            // local_ip_address
            if (fields.Exists("local_ip_address"))
            {
                obj.local_ip_address = request.LocalIPAddress;
            }

            //
            // local_port
            if (fields.Exists("local_port"))
            {
                obj.local_port = request.LocalPort;
            }

            //
            // request_id
            if (fields.Exists("request_id"))
            {
                obj.request_id = request.RequestId;
            }

            //
            // connection_id
            if (fields.Exists("connection_id"))
            {
                obj.connection_id = request.ConnectionId;
            }

            //
            // pipeline_state
            if (fields.Exists("pipeline_state"))
            {
                obj.pipeline_state = Enum.GetName(typeof(PipelineState), request.PipelineState);
            }

            //
            // current_module
            if (fields.Exists("current_module"))
            {
                obj.current_module = request.CurrentModule;
            }

            //
            // time_elapsed
            if (fields.Exists("time_elapsed"))
            {
                obj.time_elapsed = request.TimeElapsed;
            }

            //
            // time_in_module
            if (fields.Exists("time_in_module"))
            {
                obj.time_in_module = request.TimeInModule;
            }

            //
            // time_in_state
            if (fields.Exists("time_in_state"))
            {
                obj.time_in_state = request.TimeInState;
            }

            //
            // worker_process
            if (fields.Exists("worker_process"))
            {
                var wp = WorkerProcessHelper.GetWorkerProcess(request.ProcessId);
                if (wp != null)
                {
                    obj.worker_process = WorkerProcessHelper.ToJsonModelRef(wp);
                }
            }

            //
            // website
            if (fields.Exists("website"))
            {
                var site = Sites.SiteHelper.GetSite(request.SiteId);
                if (site != null)
                {
                    obj.website = Sites.SiteHelper.ToJsonModelRef(site);
                }
            }

            return(Core.Environment.Hal.Apply(Defines.RequestsResource.Guid, obj, full));
        }