public static string ValidateStaticAssetsForSnippetCreation(StaticAssets staticAssets) { if (staticAssets == null) { return(null); } foreach (var url in staticAssets.Scripts ?? Enumerable.Empty <string>()) { if (!Uri.TryCreate(url, UriKind.Absolute, out _)) { return($"Invalid JS file URL: {url}"); } } foreach (var url in staticAssets.Styles ?? Enumerable.Empty <string>()) { if (!Uri.TryCreate(url, UriKind.Absolute, out _)) { return($"Invalid CSS file URL: {url}"); } } return(null); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); StaticAssets.Initialize(new StaticAssetResolver(Server.MapPath("~/assets.json"), HttpContext.Current.Cache)); }
public static string ValidateStaticAssetsForSnippetCreation(StaticAssets staticAssets) { if (staticAssets == null) { return(null); } if (staticAssets.Scripts != null) { var uniqueScripts = new HashSet <string>(); foreach (var script in staticAssets.Scripts) { var isValidUrl = script.Source == StaticAssetSource.Cdn ? Uri.TryCreate(script.Url, UriKind.Absolute, out _) : Uri.TryCreate(script.Url, UriKind.Relative, out _); if (!isValidUrl) { return($"Invalid JS file URL: {script.Url}"); } if (uniqueScripts.Contains(script.Url)) { return($"Script '{script.Url}' is duplicated."); } uniqueScripts.Add(script.Url); } } if (staticAssets.Styles != null) { var uniqueStyles = new HashSet <string>(); foreach (var style in staticAssets.Styles) { var isValidUrl = style.Source == StaticAssetSource.Cdn ? Uri.TryCreate(style.Url, UriKind.Absolute, out _) : Uri.TryCreate(style.Url, UriKind.Relative, out _); if (!isValidUrl) { return($"Invalid CSS file URL: {style.Url}"); } if (uniqueStyles.Contains(style.Url)) { return($"Style '{style.Url}' is duplicated."); } uniqueStyles.Add(style.Url); } } return(null); }
public RealDiceBot( IConfiguration configuration, IRollService rollService, StaticAssets staticAssets, ILoggerFactory logger) { _botId = configuration["MicrosoftAppId"] ?? Guid.NewGuid().ToString(); this.logger = logger.CreateLogger <RealDiceBot>(); this.rollService = rollService; this.staticAssets = staticAssets; }
public void ShouldProvideFullUrlForAnAssetUsingConfiguredRoot() { var config = new Mock <IApplicationConfiguration>(); var assets = new StaticAssets(config.Object); config.Setup(o => o.GetStaticAssetsRootUrl()).Returns("http://assets.example.com/"); var asset = assets.UrlFor("logo.png"); asset.Should().Be("http://assets.example.com/logo.png"); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); var useLocal = bool.Parse(ConfigurationManager.AppSettings["UseLocal"]); StaticAssets.Initialize(new StaticAssetResolver(Server.MapPath(useLocal? "~/assetsLocal.json":"~/assetsProd.json"), HttpContext.Current.Cache)); }
public async Task <string> SaveSnippetAsync( IEnumerable <CodeFile> codeFiles, IEnumerable <Package> installedPackages, StaticAssets staticAssets) { if (codeFiles == null) { throw new ArgumentNullException(nameof(codeFiles)); } var codeFilesValidationError = CodeFilesHelper.ValidateCodeFilesForSnippetCreation(codeFiles); if (!string.IsNullOrWhiteSpace(codeFilesValidationError)) { throw new InvalidOperationException(codeFilesValidationError); } var packagesValidationError = PackagesHelper.ValidatePackagesForSnippetCreation(installedPackages); if (!string.IsNullOrWhiteSpace(packagesValidationError)) { throw new InvalidOperationException(packagesValidationError); } var staticAssetsValidationError = StaticAssetsHelper.ValidateStaticAssetsForSnippetCreation(staticAssets); if (!string.IsNullOrWhiteSpace(staticAssetsValidationError)) { throw new InvalidOperationException(staticAssetsValidationError); } var requestData = new CreateSnippetRequest { Files = codeFiles, InstalledPackages = installedPackages, StaticAssets = staticAssets, }; var response = await this.httpClient.PostAsJsonAsync(this.snippetsOptions.CreateUrl, requestData); response.EnsureSuccessStatusCode(); var id = await response.Content.ReadAsStringAsync(); return(id); }