internal static object ToJsonModel(Site site, string path) { var urlSection = GetUrlCompressionSection(site, path); // Http Compression section has 'allowDefinition="AppHostOnly"' which means it can only be edited at webserver level // We factor this in when displaying the metadata var httpSection = GetHttpCompressionSection(site, path); bool isLocal = urlSection.IsLocallyStored || httpSection.IsLocallyStored; bool isLocked = urlSection.IsLocked; OverrideMode overrideMode = urlSection.OverrideMode; OverrideMode overrideModeEffective = urlSection.OverrideModeEffective; CompressionId compressionId = new CompressionId(site?.Id, path, isLocal); var obj = new { id = compressionId.Uuid, scope = site == null ? string.Empty : site.Name + path, metadata = ConfigurationUtility.MetadataToJson(isLocal, isLocked, overrideMode, overrideModeEffective), directory = httpSection.Directory, do_disk_space_limitting = httpSection.DoDiskSpaceLimiting, max_disk_space_usage = httpSection.MaxDiskSpaceUsage, min_file_size = httpSection.MinFileSizeForComp, do_dynamic_compression = urlSection.DoDynamicCompression, do_static_compression = urlSection.DoStaticCompression, website = SiteHelper.ToJsonModelRef(site) }; return(Environment.Hal.Apply(Defines.Resource.Guid, obj)); }
public override void Start() { var host = Environment.Host; var hal = Environment.Hal; host.RouteBuilder.MapWebApiRoute(Defines.Resource.Guid, $"{Defines.PATH}/{{id?}}", new { controller = "compression" }); // Self hal.ProvideLink(Defines.Resource.Guid, "self", comp => new { href = CompressionHelper.GetLocation(comp.id) }); // Web Server hal.ProvideLink(WebServer.Defines.Resource.Guid, Defines.Resource.Name, _ => { var id = new CompressionId(null, null, CompressionHelper.IsSectionLocal(null, null)); return(new { href = CompressionHelper.GetLocation(id.Uuid) }); }); // Site hal.ProvideLink(Sites.Defines.Resource.Guid, Defines.Resource.Name, site => { var siteId = new SiteId((string)site.id); Site s = SiteHelper.GetSite(siteId.Id); var id = new CompressionId(siteId.Id, "/", CompressionHelper.IsSectionLocal(s, "/")); return(new { href = CompressionHelper.GetLocation(id.Uuid) }); }); // Application hal.ProvideLink(Applications.Defines.Resource.Guid, Defines.Resource.Name, app => { var appId = new ApplicationId((string)app.id); Site s = SiteHelper.GetSite(appId.SiteId); var id = new CompressionId(appId.SiteId, appId.Path, CompressionHelper.IsSectionLocal(s, appId.Path)); return(new { href = CompressionHelper.GetLocation(id.Uuid) }); }); }
public object Get(string id) { CompressionId compId = new CompressionId(id); Site site = compId.SiteId == null ? null : SiteHelper.GetSite(compId.SiteId.Value); return(CompressionHelper.ToJsonModel(site, compId.Path)); }
public void Delete(string id) { CompressionId compId = new CompressionId(id); Context.Response.StatusCode = (int)HttpStatusCode.NoContent; Site site = (compId.SiteId != null) ? SiteHelper.GetSite(compId.SiteId.Value) : null; if (site == null) { return; } CompressionHelper.GetUrlCompressionSection(site, compId.Path, ManagementUnit.ResolveConfigScope()).RevertToParent(); // Http compression section is not reverted because it only allows definition in apphost ManagementUnit.Current.Commit(); }
public object Patch(string id, [FromBody] dynamic model) { CompressionId compId = new CompressionId(id); Site site = compId.SiteId == null ? null : SiteHelper.GetSite(compId.SiteId.Value); if (compId.SiteId != null && site == null) { // Targetting section for a site, but unable to find that site return(NotFound()); } string configPath = model == null ? null : ManagementUnit.ResolveConfigScope(model); CompressionHelper.UpdateSettings(model, site, compId.Path, configPath); ManagementUnit.Current.Commit(); return(CompressionHelper.ToJsonModel(site, compId.Path)); }
public async Task Delete(string id) { CompressionId compId = new CompressionId(id); Context.Response.StatusCode = (int)HttpStatusCode.NoContent; Site site = (compId.SiteId != null) ? SiteHelper.GetSite(compId.SiteId.Value) : null; if (site != null) { // Http compression section is not reverted because it only allows definition in apphost CompressionHelper.GetUrlCompressionSection(site, compId.Path, ManagementUnit.ResolveConfigScope()).RevertToParent(); ManagementUnit.Current.Commit(); } if (compId.SiteId == null && (CompressionHelper.IsStaticEnabled() || CompressionHelper.IsDynamicEnabled())) { await CompressionHelper.SetFeatureEnabled(false); } }