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)); }
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)); }