Exemplo n.º 1
0
        internal static object ToJsonModel(Site site, Fields fields = null, bool full = true)
        {
            if (site == null)
            {
                return(null);
            }

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

            dynamic obj    = new ExpandoObject();
            var     siteId = new SiteId(site.Id);

            //
            // name
            if (fields.Exists("name"))
            {
                obj.name = site.Name;
            }

            //
            // id
            obj.id = siteId.Uuid;

            //
            // physical_path
            if (fields.Exists("physical_path"))
            {
                string      physicalPath = string.Empty;
                Application rootApp      = site.Applications["/"];

                if (rootApp != null && rootApp.VirtualDirectories["/"] != null)
                {
                    physicalPath = rootApp.VirtualDirectories["/"].PhysicalPath;
                }

                obj.physical_path = physicalPath;
            }

            //
            // key
            if (fields.Exists("key"))
            {
                obj.key = siteId.Id;
            }

            //
            // status
            if (fields.Exists("status"))
            {
                // Prepare state
                Status state = Status.Unknown;
                try {
                    state = StatusExtensions.FromObjectState(site.State);
                }
                catch (COMException) {
                    // Problem getting state of site. Possible reasons:
                    // 1. Site's application pool was deleted.
                    // 2. Site was just created and the status is not accessible yet.
                }
                obj.status = Enum.GetName(typeof(Status), state).ToLower();
            }

            //
            // server_auto_start
            if (fields.Exists("server_auto_start"))
            {
                obj.server_auto_start = site.ServerAutoStart;
            }

            //
            // enabled_protocols
            if (fields.Exists("enabled_protocols"))
            {
                Application rootApp = site.Applications["/"];
                obj.enabled_protocols = rootApp == null ? string.Empty : rootApp.EnabledProtocols;
            }

            //
            // limits
            if (fields.Exists("limits"))
            {
                dynamic limits = new ExpandoObject();

                limits.connection_timeout = site.Limits.ConnectionTimeout.TotalSeconds;
                limits.max_bandwidth      = site.Limits.MaxBandwidth;
                limits.max_connections    = site.Limits.MaxConnections;

                if (site.Limits.Schema.HasAttribute(MaxUrlSegmentsAttribute))
                {
                    limits.max_url_segments = site.Limits.MaxUrlSegments;
                }

                obj.limits = limits;
            }

            //
            // bindings
            if (fields.Exists("bindings"))
            {
                obj.bindings = site.Bindings.Select(b => ToJsonModel(b));
            }

            //
            // application_pool
            if (fields.Exists("application_pool"))
            {
                Application rootApp = site.Applications["/"];
                var         pool    = rootApp != null?AppPoolHelper.GetAppPool(rootApp.ApplicationPoolName) : null;

                obj.application_pool = (pool == null) ? null : AppPoolHelper.ToJsonModelRef(pool, fields.Filter("application_pool"));
            }

            return(Core.Environment.Hal.Apply(Defines.Resource.Guid, obj, full));
        }
        internal static object WpToJsonModel(WorkerProcess wp, Fields fields = null, bool full = true)
        {
            if (wp == null)
            {
                throw new ArgumentNullException(nameof(wp));
            }

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

            Process p = Process.GetProcessById(wp.ProcessId);

            dynamic obj = new ExpandoObject();

            //
            // name
            if (fields.Exists("name"))
            {
                obj.name = p.ProcessName;
            }

            //
            // id
            obj.id = new WorkerProcessId(p.Id, Guid.Parse(wp.ProcessGuid)).Uuid;

            //
            // status
            if (fields.Exists("status"))
            {
                obj.status = Enum.GetName(typeof(WorkerProcessState), wp.State).ToLower();
            }

            //
            // process_id
            if (fields.Exists("process_id"))
            {
                obj.process_id = p.Id;
            }

            //
            // process_guid
            if (fields.Exists("process_guid"))
            {
                obj.process_guid = wp.ProcessGuid;
            }

            //
            // start_time
            if (fields.Exists("start_time"))
            {
                obj.start_time = p.StartTime;
            }

            //
            // working_set
            if (fields.Exists("working_set"))
            {
                obj.working_set = p.WorkingSet64;
            }

            //
            // peak_working_set
            if (fields.Exists("peak_working_set"))
            {
                obj.peak_working_set = p.PeakWorkingSet64;
            }

            //
            // private_memory_size
            if (fields.Exists("private_memory_size"))
            {
                obj.private_memory_size = p.PrivateMemorySize64;
            }

            //
            // virtual_memory_size
            if (fields.Exists("virtual_memory_size"))
            {
                obj.virtual_memory_size = p.VirtualMemorySize64;
            }

            //
            // peak_virtual_memory_size
            if (fields.Exists("peak_virtual_memory_size"))
            {
                obj.peak_virtual_memory_size = p.PeakVirtualMemorySize64;
            }

            //
            // total_processor_time
            if (fields.Exists("total_processor_time"))
            {
                obj.total_processor_time = p.TotalProcessorTime;
            }

            //
            // application_pool
            if (fields.Exists("application_pool"))
            {
                ApplicationPool pool = AppPoolHelper.GetAppPool(wp.AppPoolName);
                obj.application_pool = AppPoolHelper.ToJsonModelRef(pool);
            }

            return(Core.Environment.Hal.Apply(Defines.Resource.Guid, obj, full));
        }
Exemplo n.º 3
0
        internal static object ToJsonModel(Application app, Site site, Fields fields = null, bool full = true)
        {
            if (app == null)
            {
                return(null);
            }

            if (site == null)
            {
                throw new ArgumentNullException("site");
            }

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

            dynamic obj = new ExpandoObject();

            // location
            if (fields.Exists("location"))
            {
                obj.location = $"{site.Name}{app.Path}";
            }

            //
            // path
            if (fields.Exists("path"))
            {
                obj.path = app.Path;
            }

            //
            // id
            obj.id = new ApplicationId(app.Path, site.Id).Uuid;

            //
            // physical_path
            if (fields.Exists("physical_path"))
            {
                // Obtain path from the root vdir
                VirtualDirectory vdir = app.VirtualDirectories["/"];

                if (vdir != null)
                {
                    obj.physical_path = vdir.PhysicalPath;
                }
            }

            //
            // enabled_protocols
            if (fields.Exists("enabled_protocols"))
            {
                obj.enabled_protocols = app.EnabledProtocols;
            }

            // website
            if (fields.Exists("website"))
            {
                obj.website = SiteHelper.ToJsonModelRef(site, fields.Filter("website"));
            }

            //
            // application_pool
            if (fields.Exists("application_pool"))
            {
                ApplicationPool pool = AppPoolHelper.GetAppPool(app.ApplicationPoolName);
                obj.application_pool = pool != null?AppPoolHelper.ToJsonModelRef(pool, fields.Filter("application_pool")) : null;
            }

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