Ejemplo n.º 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))
            });
        }
        public static IEnumerable <Request> GetRequests(Site site, Filter filter = null)
        {
            if (site == null)
            {
                throw new ArgumentNullException(nameof(site));
            }

            // Get all application pools for the site
            Dictionary <string, ApplicationPool> pools = new Dictionary <string, ApplicationPool>();

            foreach (var app in site.Applications)
            {
                if (!string.IsNullOrEmpty(app.ApplicationPoolName) && !pools.ContainsKey(app.ApplicationPoolName))
                {
                    var pool = AppPoolHelper.GetAppPool(app.ApplicationPoolName);
                    if (pool != null)
                    {
                        pools[app.ApplicationPoolName] = pool;
                    }
                }
            }

            // Get all worker processes running in the app pools
            List <WorkerProcess> wps = new List <WorkerProcess>();

            foreach (var pool in pools.Values)
            {
                wps.Concat(WorkerProcessHelper.GetWorkerProcesses(pool));
            }

            var result = new List <Request>();

            foreach (var wp in wps)
            {
                foreach (var req in GetRequests(wp, filter))
                {
                    if (req.SiteId == site.Id)
                    {
                        result.Add(req);
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 3
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()));
        }
Ejemplo n.º 4
0
        public static IEnumerable <Request> GetRequests(Site site, Filter filter = null)
        {
            if (site == null)
            {
                throw new ArgumentNullException(nameof(site));
            }

            var result = new List <Request>();

            foreach (var wp in WorkerProcessHelper.GetWorkerProcesses(site))
            {
                foreach (var r in GetRequests(wp, filter))
                {
                    if (r.SiteId == site.Id)
                    {
                        result.Add(r);
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 5
0
        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));
        }