public static void ProcessPolicies(Tenant tenant, CdnSettings cdnSettings, SPOTenantCdnType cdnType, TokenParser parser, PnPMonitoredScope scope) { var isDirty = false; var rawPolicies = tenant.GetTenantCdnPolicies(cdnType); tenant.Context.ExecuteQueryRetry(); var policies = ParsePolicies(rawPolicies); if (!string.IsNullOrEmpty(cdnSettings.IncludeFileExtensions)) { var parsedValue = parser.ParseString(cdnSettings.IncludeFileExtensions); if (policies.FirstOrDefault(p => p.Key == SPOTenantCdnPolicyType.IncludeFileExtensions).Value != parsedValue) { scope.LogInfo($"Setting IncludeFileExtensions policy to {parsedValue}"); tenant.SetTenantCdnPolicy(cdnType, SPOTenantCdnPolicyType.IncludeFileExtensions, parsedValue); isDirty = true; } } if (!string.IsNullOrEmpty(cdnSettings.ExcludeRestrictedSiteClassifications)) { var parsedValue = parser.ParseString(cdnSettings.ExcludeRestrictedSiteClassifications); if (policies.FirstOrDefault(p => p.Key == SPOTenantCdnPolicyType.ExcludeRestrictedSiteClassifications).Value != parsedValue) { scope.LogInfo($"Setting ExcludeRestrictSiteClassifications policy to {parsedValue}"); tenant.SetTenantCdnPolicy(cdnType, SPOTenantCdnPolicyType.ExcludeRestrictedSiteClassifications, parsedValue); isDirty = true; } } if (!string.IsNullOrEmpty(cdnSettings.ExcludeIfNoScriptDisabled)) { var parsedValue = parser.ParseString(cdnSettings.ExcludeIfNoScriptDisabled); if (policies.FirstOrDefault(p => p.Key == SPOTenantCdnPolicyType.ExcludeIfNoScriptDisabled).Value != parsedValue) { scope.LogInfo($"Setting ExcludeIfNoScriptDisabled policy to {parsedValue}"); tenant.SetTenantCdnPolicy(cdnType, SPOTenantCdnPolicyType.ExcludeIfNoScriptDisabled, parsedValue); isDirty = true; } } if (isDirty) { tenant.Context.ExecuteQueryRetry(); } }
public static void ProcessOrigins(Tenant tenant, CdnSettings cdnSettings, SPOTenantCdnType cdnType, TokenParser parser, PnPMonitoredScope scope) { if (cdnSettings.Origins != null && cdnSettings.Origins.Any()) { var origins = tenant.GetTenantCdnOrigins(cdnType); tenant.Context.ExecuteQueryRetry(); foreach (var origin in cdnSettings.Origins) { switch (origin.Action) { case OriginAction.Add: { var parsedOriginUrl = parser.ParseString(origin.Url); if (!origins.Contains(parsedOriginUrl)) { scope.LogInfo($"Adding {parsedOriginUrl} to {cdnType} CDN"); tenant.AddTenantCdnOrigin(cdnType, parsedOriginUrl); } break; } case OriginAction.Remove: { var parsedOriginUrl = parser.ParseString(origin.Url); if (origins.Contains(parsedOriginUrl)) { scope.LogInfo($"Removing {parsedOriginUrl} to {cdnType} CDN"); tenant.RemoveTenantCdnOrigin(cdnType, parsedOriginUrl); } break; } } tenant.Context.ExecuteQueryRetry(); } } }