From 09cd485ab9c1a4f6c8b3e0046375e57d94aa3f5d Mon Sep 17 00:00:00 2001 From: Tommy Parnell Date: Sat, 23 Jul 2016 21:06:36 -0400 Subject: [PATCH] init --- EmbedImagesMiddlewear.sln | 7 + Readme.md | 23 +++ src/EmbedImagesMiddlewear/BclExtensions.cs | 22 +++ src/EmbedImagesMiddlewear/Class1.cs | 14 -- src/EmbedImagesMiddlewear/init.cs | 82 ++++++++ src/EmbedImagesMiddlewear/project.json | 7 +- src/EmbedImagesMiddlewearExample/.bowerrc | 3 + .../Controllers/HomeController.cs | 35 ++++ .../EmbedImagesMiddlewearExample.xproj | 23 +++ src/EmbedImagesMiddlewearExample/Program.cs | 24 +++ .../Project_Readme.html | 187 ++++++++++++++++++ .../Properties/launchSettings.json | 27 +++ src/EmbedImagesMiddlewearExample/Startup.cs | 61 ++++++ .../Views/Home/About.cshtml | 7 + .../Views/Home/Contact.cshtml | 17 ++ .../Views/Home/Index.cshtml | 110 +++++++++++ .../Views/Shared/Error.cshtml | 14 ++ .../Views/Shared/_Layout.cshtml | 67 +++++++ .../Views/_ViewImports.cshtml | 2 + .../Views/_ViewStart.cshtml | 3 + .../appsettings.json | 10 + src/EmbedImagesMiddlewearExample/bower.json | 10 + .../bundleconfig.json | 24 +++ src/EmbedImagesMiddlewearExample/project.json | 66 +++++++ src/EmbedImagesMiddlewearExample/web.config | 14 ++ .../wwwroot/.gitignore | 1 + .../wwwroot/_references.js | 6 + .../wwwroot/css/site.css | 38 ++++ .../wwwroot/css/site.min.css | 1 + .../wwwroot/favicon.ico | Bin 0 -> 32038 bytes .../wwwroot/images/banner1.svg | 1 + .../wwwroot/images/banner2.svg | 1 + .../wwwroot/images/banner3.svg | 1 + .../wwwroot/images/banner4.svg | 1 + .../wwwroot/images/rose.jpg | Bin 0 -> 23699 bytes .../wwwroot/js/site.js | 1 + .../wwwroot/js/site.min.js | 0 37 files changed, 894 insertions(+), 16 deletions(-) create mode 100644 Readme.md create mode 100644 src/EmbedImagesMiddlewear/BclExtensions.cs delete mode 100644 src/EmbedImagesMiddlewear/Class1.cs create mode 100644 src/EmbedImagesMiddlewear/init.cs create mode 100644 src/EmbedImagesMiddlewearExample/.bowerrc create mode 100644 src/EmbedImagesMiddlewearExample/Controllers/HomeController.cs create mode 100644 src/EmbedImagesMiddlewearExample/EmbedImagesMiddlewearExample.xproj create mode 100644 src/EmbedImagesMiddlewearExample/Program.cs create mode 100644 src/EmbedImagesMiddlewearExample/Project_Readme.html create mode 100644 src/EmbedImagesMiddlewearExample/Properties/launchSettings.json create mode 100644 src/EmbedImagesMiddlewearExample/Startup.cs create mode 100644 src/EmbedImagesMiddlewearExample/Views/Home/About.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/Views/Home/Contact.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/Views/Home/Index.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/Views/Shared/Error.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/Views/Shared/_Layout.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/Views/_ViewImports.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/Views/_ViewStart.cshtml create mode 100644 src/EmbedImagesMiddlewearExample/appsettings.json create mode 100644 src/EmbedImagesMiddlewearExample/bower.json create mode 100644 src/EmbedImagesMiddlewearExample/bundleconfig.json create mode 100644 src/EmbedImagesMiddlewearExample/project.json create mode 100644 src/EmbedImagesMiddlewearExample/web.config create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/.gitignore create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/_references.js create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/css/site.css create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/css/site.min.css create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/favicon.ico create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/images/banner1.svg create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/images/banner2.svg create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/images/banner3.svg create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/images/banner4.svg create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/images/rose.jpg create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/js/site.js create mode 100644 src/EmbedImagesMiddlewearExample/wwwroot/js/site.min.js diff --git a/EmbedImagesMiddlewear.sln b/EmbedImagesMiddlewear.sln index 8b1f20a..ab239e0 100644 --- a/EmbedImagesMiddlewear.sln +++ b/EmbedImagesMiddlewear.sln @@ -12,6 +12,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EmbedImagesMiddlewear", "src\EmbedImagesMiddlewear\EmbedImagesMiddlewear.xproj", "{961D39B1-890E-4210-803B-A6D269BC81BA}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "EmbedImagesMiddlewearExample", "src\EmbedImagesMiddlewearExample\EmbedImagesMiddlewearExample.xproj", "{643B859E-8D49-4F84-909E-BE801B05A325}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -22,11 +24,16 @@ Global {961D39B1-890E-4210-803B-A6D269BC81BA}.Debug|Any CPU.Build.0 = Debug|Any CPU {961D39B1-890E-4210-803B-A6D269BC81BA}.Release|Any CPU.ActiveCfg = Release|Any CPU {961D39B1-890E-4210-803B-A6D269BC81BA}.Release|Any CPU.Build.0 = Release|Any CPU + {643B859E-8D49-4F84-909E-BE801B05A325}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {643B859E-8D49-4F84-909E-BE801B05A325}.Debug|Any CPU.Build.0 = Debug|Any CPU + {643B859E-8D49-4F84-909E-BE801B05A325}.Release|Any CPU.ActiveCfg = Release|Any CPU + {643B859E-8D49-4F84-909E-BE801B05A325}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {961D39B1-890E-4210-803B-A6D269BC81BA} = {CD7FBF48-5725-4DA0-B342-1C3319DD3B0A} + {643B859E-8D49-4F84-909E-BE801B05A325} = {CD7FBF48-5725-4DA0-B342-1C3319DD3B0A} EndGlobalSection EndGlobal diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..121a0bb --- /dev/null +++ b/Readme.md @@ -0,0 +1,23 @@ +This is a simple aspnet middlewear that converts your small images to base64 encoded data tags in html. + +I wouldn't actually recommend doing this, I mostly did this to see what is possible in aspnet core middlwear. There is much [evidence](http://davidbcalhoun.com/2011/when-to-base64-encode-images-and-when-not-to/) to suggest that it is a bad idea + +How to use: + +```csharp +public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + + app.UseEmbedImages(env); + + } + +``` + +## Before + +`` + +## After + +`` \ No newline at end of file diff --git a/src/EmbedImagesMiddlewear/BclExtensions.cs b/src/EmbedImagesMiddlewear/BclExtensions.cs new file mode 100644 index 0000000..c685ccf --- /dev/null +++ b/src/EmbedImagesMiddlewear/BclExtensions.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace EmbedImagesMiddlewear +{ + public static class BclExtensions + { + private static Regex regexImgSrc = new Regex(@"]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline); + + public static IEnumerable ToImageLinks(this string htmlSource) + { + var matchesImgSrc = regexImgSrc.Matches(htmlSource); + foreach (Match m in matchesImgSrc) + { + yield return m.Groups[1].Value; + } + } + } +} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewear/Class1.cs b/src/EmbedImagesMiddlewear/Class1.cs deleted file mode 100644 index b2e5dfd..0000000 --- a/src/EmbedImagesMiddlewear/Class1.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace EmbedImagesMiddlewear -{ - public class Class1 - { - public Class1() - { - } - } -} diff --git a/src/EmbedImagesMiddlewear/init.cs b/src/EmbedImagesMiddlewear/init.cs new file mode 100644 index 0000000..1f12b4e --- /dev/null +++ b/src/EmbedImagesMiddlewear/init.cs @@ -0,0 +1,82 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace EmbedImagesMiddlewear +{ + public class EmbedImages + { + private readonly IHostingEnvironment env; + private RequestDelegate _next; + private Regex regexImgSrc = new Regex(@"]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>", RegexOptions.Compiled); + + public EmbedImages(RequestDelegate next, IHostingEnvironment env) + { + _next = next; + this.env = env; + } + + public async Task Invoke(HttpContext context) + { + var acceptEncoding = context.Request.Headers["Accept-Encoding"]; + if (acceptEncoding.ToString().IndexOf("gzip", StringComparison.CurrentCultureIgnoreCase) < 0) + { + await _next?.Invoke(context); + return; + } + + using (var buffer = new MemoryStream()) + { + var body = context.Response.Body; + context.Response.Body = buffer; + try + { + await _next?.Invoke(context); + string bodyText; + buffer.Seek(0, SeekOrigin.Begin); + using (var reader = new StreamReader(buffer)) + { + bodyText = await reader.ReadToEndAsync(); + } + var urls = bodyText.ToImageLinks(); + foreach (var url in urls) + { + var filePath = Path.Combine(env.WebRootPath, url.Insert(0, ".")); + var file = new FileInfo(filePath); + //if (file.Length > this.maxBytes) continue; + var contentType = string.Empty; + if (new Microsoft.AspNetCore.StaticFiles.FileExtensionContentTypeProvider().TryGetContentType(filePath, out contentType)) + { + var bytes = File.ReadAllBytes(filePath); + bodyText = bodyText.Replace(url, $"data:{contentType};base64,{Convert.ToBase64String(bytes)}"); + } + } + using (var write = new MemoryStream(Encoding.UTF8.GetBytes(bodyText))) + { + write.WriteTo(body); + } + } + finally + { + context.Response.Body = body; + } + } + } + } + + public static class BuilderExtension + { + public static void UseEmbedImages(this IApplicationBuilder app, IHostingEnvironment env) + { + app.UseMiddleware(env); + } + } +} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewear/project.json b/src/EmbedImagesMiddlewear/project.json index 864b9a5..be9967b 100644 --- a/src/EmbedImagesMiddlewear/project.json +++ b/src/EmbedImagesMiddlewear/project.json @@ -2,7 +2,10 @@ "version": "1.0.0-*", "dependencies": { - "NETStandard.Library": "1.6.0" + "NETStandard.Library": "1.6.0", + "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", + "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0", + "Microsoft.AspNetCore.StaticFiles": "1.0.0" }, "frameworks": { @@ -10,4 +13,4 @@ "imports": "dnxcore50" } } -} +} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/.bowerrc b/src/EmbedImagesMiddlewearExample/.bowerrc new file mode 100644 index 0000000..6406626 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "wwwroot/lib" +} diff --git a/src/EmbedImagesMiddlewearExample/Controllers/HomeController.cs b/src/EmbedImagesMiddlewearExample/Controllers/HomeController.cs new file mode 100644 index 0000000..95b342a --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Controllers/HomeController.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace EmbedImagesMiddlewearExample.Controllers +{ + public class HomeController : Controller + { + public IActionResult Index() + { + return View(); + } + + public IActionResult About() + { + ViewData["Message"] = "Your application description page."; + + return View(); + } + + public IActionResult Contact() + { + ViewData["Message"] = "Your contact page."; + + return View(); + } + + public IActionResult Error() + { + return View(); + } + } +} diff --git a/src/EmbedImagesMiddlewearExample/EmbedImagesMiddlewearExample.xproj b/src/EmbedImagesMiddlewearExample/EmbedImagesMiddlewearExample.xproj new file mode 100644 index 0000000..3603c45 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/EmbedImagesMiddlewearExample.xproj @@ -0,0 +1,23 @@ + + + + 14.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 643b859e-8d49-4f84-909e-be801b05a325 + EmbedImagesMiddlewearExample + .\obj + .\bin\ + v4.5.2 + + + 2.0 + + + + + + + diff --git a/src/EmbedImagesMiddlewearExample/Program.cs b/src/EmbedImagesMiddlewearExample/Program.cs new file mode 100644 index 0000000..18ee81f --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Program.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; + +namespace EmbedImagesMiddlewearExample +{ + public class Program + { + public static void Main(string[] args) + { + var host = new WebHostBuilder() + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseIISIntegration() + .UseStartup() + .Build(); + + host.Run(); + } + } +} diff --git a/src/EmbedImagesMiddlewearExample/Project_Readme.html b/src/EmbedImagesMiddlewearExample/Project_Readme.html new file mode 100644 index 0000000..1a0f5b5 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Project_Readme.html @@ -0,0 +1,187 @@ + + + + + Welcome to ASP.NET Core + + + + + + + + + + diff --git a/src/EmbedImagesMiddlewearExample/Properties/launchSettings.json b/src/EmbedImagesMiddlewearExample/Properties/launchSettings.json new file mode 100644 index 0000000..b1230ae --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:60245/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "EmbedImagesMiddlewearExample": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/Startup.cs b/src/EmbedImagesMiddlewearExample/Startup.cs new file mode 100644 index 0000000..7e807dc --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Startup.cs @@ -0,0 +1,61 @@ +using EmbedImagesMiddlewear; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace EmbedImagesMiddlewearExample +{ + public class Startup + { + public Startup(IHostingEnvironment env) + { + var builder = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables(); + Configuration = builder.Build(); + } + + public IConfigurationRoot Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + // Add framework services. + services.AddMvc(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + loggerFactory.AddConsole(Configuration.GetSection("Logging")); + loggerFactory.AddDebug(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseBrowserLink(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + app.UseEmbedImages(env); + app.UseStaticFiles(); + + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + }); + } + } +} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/Views/Home/About.cshtml b/src/EmbedImagesMiddlewearExample/Views/Home/About.cshtml new file mode 100644 index 0000000..50476d1 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/Home/About.cshtml @@ -0,0 +1,7 @@ +@{ + ViewData["Title"] = "About"; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

Use this area to provide additional information.

diff --git a/src/EmbedImagesMiddlewearExample/Views/Home/Contact.cshtml b/src/EmbedImagesMiddlewearExample/Views/Home/Contact.cshtml new file mode 100644 index 0000000..15c12c6 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/Home/Contact.cshtml @@ -0,0 +1,17 @@ +@{ + ViewData["Title"] = "Contact"; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ P: + 425.555.0100 +
+ +
+ Support: Support@example.com
+ Marketing: Marketing@example.com +
diff --git a/src/EmbedImagesMiddlewearExample/Views/Home/Index.cshtml b/src/EmbedImagesMiddlewearExample/Views/Home/Index.cshtml new file mode 100644 index 0000000..9f6d8f4 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/Home/Index.cshtml @@ -0,0 +1,110 @@ +@{ + ViewData["Title"] = "Home Page"; +} + + + + \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/Views/Shared/Error.cshtml b/src/EmbedImagesMiddlewearExample/Views/Shared/Error.cshtml new file mode 100644 index 0000000..e514139 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/Shared/Error.cshtml @@ -0,0 +1,14 @@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application. +

diff --git a/src/EmbedImagesMiddlewearExample/Views/Shared/_Layout.cshtml b/src/EmbedImagesMiddlewearExample/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000..341d14b --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/Shared/_Layout.cshtml @@ -0,0 +1,67 @@ + + + + + + @ViewData["Title"] - EmbedImagesMiddlewearExample + + + + + + + + + + + + +
+ @RenderBody() +
+
+

© 2016 - EmbedImagesMiddlewearExample

+
+
+ + + + + + + + + + + + + @RenderSection("scripts", required: false) + + diff --git a/src/EmbedImagesMiddlewearExample/Views/_ViewImports.cshtml b/src/EmbedImagesMiddlewearExample/Views/_ViewImports.cshtml new file mode 100644 index 0000000..f5b87c5 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +@using EmbedImagesMiddlewearExample +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/src/EmbedImagesMiddlewearExample/Views/_ViewStart.cshtml b/src/EmbedImagesMiddlewearExample/Views/_ViewStart.cshtml new file mode 100644 index 0000000..a5f1004 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/src/EmbedImagesMiddlewearExample/appsettings.json b/src/EmbedImagesMiddlewearExample/appsettings.json new file mode 100644 index 0000000..fa8ce71 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/src/EmbedImagesMiddlewearExample/bower.json b/src/EmbedImagesMiddlewearExample/bower.json new file mode 100644 index 0000000..69159b6 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/bower.json @@ -0,0 +1,10 @@ +{ + "name": "asp.net", + "private": true, + "dependencies": { + "bootstrap": "3.3.6", + "jquery": "2.2.0", + "jquery-validation": "1.14.0", + "jquery-validation-unobtrusive": "3.2.6" + } +} diff --git a/src/EmbedImagesMiddlewearExample/bundleconfig.json b/src/EmbedImagesMiddlewearExample/bundleconfig.json new file mode 100644 index 0000000..04754ba --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/bundleconfig.json @@ -0,0 +1,24 @@ +// Configure bundling and minification for the project. +// More info at https://go.microsoft.com/fwlink/?LinkId=808241 +[ + { + "outputFileName": "wwwroot/css/site.min.css", + // An array of relative input file paths. Globbing patterns supported + "inputFiles": [ + "wwwroot/css/site.css" + ] + }, + { + "outputFileName": "wwwroot/js/site.min.js", + "inputFiles": [ + "wwwroot/js/site.js" + ], + // Optionally specify minification options + "minify": { + "enabled": true, + "renameLocals": true + }, + // Optinally generate .map file + "sourceMap": false + } +] diff --git a/src/EmbedImagesMiddlewearExample/project.json b/src/EmbedImagesMiddlewearExample/project.json new file mode 100644 index 0000000..fa7f6f5 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/project.json @@ -0,0 +1,66 @@ +{ + "dependencies": { + "Microsoft.NETCore.App": { + "version": "1.0.0", + "type": "platform" + }, + "Microsoft.AspNetCore.Diagnostics": "1.0.0", + "Microsoft.AspNetCore.Mvc": "1.0.0", + "Microsoft.AspNetCore.Razor.Tools": { + "version": "1.0.0-preview2-final", + "type": "build" + }, + "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", + "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", + "Microsoft.AspNetCore.StaticFiles": "1.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", + "Microsoft.Extensions.Configuration.Json": "1.0.0", + "Microsoft.Extensions.Logging": "1.0.0", + "Microsoft.Extensions.Logging.Console": "1.0.0", + "Microsoft.Extensions.Logging.Debug": "1.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", + "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", + "EmbedImagesMiddlewear": "1.0.0-*" + }, + + "tools": { + "BundlerMinifier.Core": "2.0.238", + "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", + "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" + }, + + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dotnet5.6", + "portable-net45+win8" + ] + } + }, + + "buildOptions": { + "emitEntryPoint": true, + "preserveCompilationContext": true + }, + + "runtimeOptions": { + "configProperties": { + "System.GC.Server": true + } + }, + + "publishOptions": { + "include": [ + "wwwroot", + "Views", + "Areas/**/Views", + "appsettings.json", + "web.config" + ] + }, + + "scripts": { + "prepublish": [ "bower install", "dotnet bundle" ], + "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] + } +} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/web.config b/src/EmbedImagesMiddlewearExample/web.config new file mode 100644 index 0000000..dc0514f --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/web.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/.gitignore b/src/EmbedImagesMiddlewearExample/wwwroot/.gitignore new file mode 100644 index 0000000..f1ff06d --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/.gitignore @@ -0,0 +1 @@ +lib/ \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/_references.js b/src/EmbedImagesMiddlewearExample/wwwroot/_references.js new file mode 100644 index 0000000..b6fe9d6 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/_references.js @@ -0,0 +1,6 @@ +/// +/// +/// +/// +/// +/// diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/css/site.css b/src/EmbedImagesMiddlewearExample/wwwroot/css/site.css new file mode 100644 index 0000000..a157770 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/css/site.css @@ -0,0 +1,38 @@ +body { + padding-top: 50px; + padding-bottom: 20px; +} + +/* Wrapping element */ +/* Set some basic padding to keep content from hitting the edges */ +.body-content { + padding-left: 15px; + padding-right: 15px; +} + +/* Set widths on the form inputs since otherwise they're 100% wide */ +input, +select, +textarea { + max-width: 280px; +} + +/* Carousel */ +.carousel-caption p { + font-size: 20px; + line-height: 1.4; +} + +/* Make .svg files in the carousel display properly in older browsers */ +.carousel-inner .item img[src$=".svg"] +{ + width: 100%; +} + +/* Hide/rearrange for smaller screens */ +@media screen and (max-width: 767px) { + /* Hide captions */ + .carousel-caption { + display: none + } +} diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/css/site.min.css b/src/EmbedImagesMiddlewearExample/wwwroot/css/site.min.css new file mode 100644 index 0000000..3beb45f --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/css/site.min.css @@ -0,0 +1 @@ +body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/favicon.ico b/src/EmbedImagesMiddlewearExample/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a3a799985c43bc7309d701b2cad129023377dc71 GIT binary patch literal 32038 zcmeHwX>eTEbtY7aYbrGrkNjgie?1jXjZ#zP%3n{}GObKv$BxI7Sl;Bwl5E+Qtj&t8 z*p|m4DO#HoJC-FyvNnp8NP<{Na0LMnTtO21(rBP}?EAiNjWgeO?z`{3ZoURUQlV2d zY1Pqv{m|X_oO91|?^z!6@@~od!@OH>&BN;>c@O+yUfy5w>LccTKJJ&`-k<%M^Zvi( z<$dKp=jCnNX5Qa+M_%6g|IEv~4R84q9|7E=|Ho(Wz3f-0wPjaRL;W*N^>q%^KGRr7 zxbjSORb_c&eO;oV_DZ7ua!sPH=0c+W;`vzJ#j~-x3uj};50#vqo*0w4!LUqs*UCh9 zvy2S%$#8$K4EOa&e@~aBS65_hc~Mpu=454VT2^KzWqEpBA=ME|O;1cn?8p<+{MKJf zbK#@1wzL44m$k(?85=Obido7=C|xWKe%66$z)NrzRwR>?hK?_bbwT z@Da?lBrBL}Zemo1@!9pYRau&!ld17h{f+UV0sY(R{ET$PBB|-=Nr@l-nY6w8HEAw* zRMIQU`24Jl_IFEPcS=_HdrOP5yf81z_?@M>83Vv65$QFr9nPg(wr`Ke8 zaY4ogdnMA*F7a4Q1_uXadTLUpCk;$ZPRRJ^sMOch;rlbvUGc1R9=u;dr9YANbQ<4Z z#P|Cp9BP$FXNPolgyr1XGt$^lFPF}rmBF5rj1Kh5%dforrP8W}_qJL$2qMBS-#%-|s#BPZBSETsn_EBYcr(W5dq( z@f%}C|iN7)YN`^)h7R?Cg}Do*w-!zwZb9=BMp%Wsh@nb22hA zA{`wa8Q;yz6S)zfo%sl08^GF`9csI9BlGnEy#0^Y3b);M+n<(}6jziM7nhe57a1rj zC@(2ISYBL^UtWChKzVWgf%4LW2Tqg_^7jMw`C$KvU+mcakFjV(BGAW9g%CzSyM;Df z143=mq0oxaK-H;o>F3~zJ<(3-j&?|QBn)WJfP#JR zRuA;`N?L83wQt78QIA$(Z)lGQY9r^SFal;LB^qi`8%8@y+mwcGsf~nv)bBy2S7z~9 z=;X@Gglk)^jpbNz?1;`!J3QUfAOp4U$Uxm5>92iT`mek#$>s`)M>;e4{#%HAAcb^8_Ax%ersk|}# z0bd;ZPu|2}18KtvmIo8`1@H~@2ejwo(5rFS`Z4&O{$$+ch2hC0=06Jh`@p+p8LZzY z&2M~8T6X^*X?yQ$3N5EzRv$(FtSxhW>>ABUyp!{484f8(%C1_y)3D%Qgfl_!sz`LTXOjR&L!zPA0qH_iNS!tY{!^2WfD%uT}P zI<~&?@&))5&hPPHVRl9);TPO>@UI2d!^ksb!$9T96V(F){puTsn(}qt_WXNw4VvHj zf;6A_XCvE`Z@}E-IOaG0rs>K>^=Sr&OgT_p;F@v0VCN0Y$r|Lw1?Wjt`AKK~RT*kJ z2>QPuVgLNcF+XKno;WBv$yj@d_WFJbl*#*V_Cwzo@%3n5%z4g21G*PVZ)wM5$A{klYozmGlB zT@u2+s}=f}25%IA!yNcXUr!!1)z(Nqbhojg0lv@7@0UlvUMT)*r;M$d0-t)Z?B1@qQk()o!4fqvfr_I0r7 zy1(NdkHEj#Yu{K>T#We#b#FD=c1XhS{hdTh9+8gy-vkcdkk*QS@y(xxEMb1w6z<^~ zYcETGfB#ibR#ql0EiD;PR$L&Vrh2uRv5t_$;NxC;>7_S5_OXxsi8udY3BUUdi55Sk zcyKM+PQ9YMA%D1kH1q48OFG(Gbl=FmV;yk8o>k%0$rJ8%-IYsHclnYuTskkaiCGkUlkMY~mx&K}XRlKIW;odWIeuKjtbc^8bBOTqK zjj(ot`_j?A6y_h%vxE9o*ntx#PGrnK7AljD_r58ylE*oy@{IY%+mA^!|2vW_`>`aC{#3`#3;D_$^S^cM zRcF+uTO2sICledvFgNMU@A%M)%8JbSLq{dD|2|2Sg8vvh_uV6*Q?F&rKaV{v_qz&y z`f;stIb?Cb2!Cg7CG91Bhu@D@RaIrq-+o+T2fwFu#|j>lD6ZS9-t^5cx>p|?flqUA z;Cgs#V)O#`Aw4$Kr)L5?|7f4izl!;n0jux}tEW$&&YBXz9o{+~HhoiYDJ`w5BVTl&ARya=M7zdy$FEe}iGBur8XE>rhLj&_yDk5D4n2GJZ07u7%zyAfNtOLn;)M?h*Py-Xtql5aJOtL4U8e|!t? z((sc6&OJXrPdVef^wZV&x=Z&~uA7^ix8rly^rEj?#d&~pQ{HN8Yq|fZ#*bXn-26P^ z5!)xRzYO9{u6vx5@q_{FE4#7BipS#{&J7*>y}lTyV94}dfE%Yk>@@pDe&F7J09(-0|wuI|$of-MRfK51#t@t2+U|*s=W; z!Y&t{dS%!4VEEi$efA!#<<7&04?kB}Soprd8*jYv;-Qj~h~4v>{XX~kjF+@Z7<t?^|i z#>_ag2i-CRAM8Ret^rZt*^K?`G|o>1o(mLkewxyA)38k93`<~4VFI?5VB!kBh%NNU zxb8K(^-MU1ImWQxG~nFB-Un;6n{lQz_FfsW9^H$Xcn{;+W^ZcG$0qLM#eNV=vGE@# z1~k&!h4@T|IiI<47@pS|i?Qcl=XZJL#$JKve;booMqDUYY{(xcdj6STDE=n?;fsS1 ze`h~Q{CT$K{+{t+#*I1=&&-UU8M&}AwAxD-rMa=e!{0gQXP@6azBq9(ji11uJF%@5 zCvV`#*?;ZguQ7o|nH%bm*s&jLej#@B35gy32ZAE0`Pz@#j6R&kN5w{O4~1rhDoU zEBdU)%Nl?8zi|DR((u|gg~r$aLYmGMyK%FO*qLvwxK5+cn*`;O`16c!&&XT{$j~5k zXb^fbh1GT-CI*Nj{-?r7HNg=e3E{6rxuluPXY z5Nm8ktc$o4-^SO0|Es_sp!A$8GVwOX+%)cH<;=u#R#nz;7QsHl;J@a{5NUAmAHq4D zIU5@jT!h?kUp|g~iN*!>jM6K!W5ar0v~fWrSHK@})@6Lh#h)C6F6@)&-+C3(zO! z8+kV|B7LctM3DpI*~EYo>vCj>_?x&H;>y0*vKwE0?vi$CLt zfSJB##P|M2dEUDBPKW=9cY-F;L;h3Fs4E2ERdN#NSL7ctAC z?-}_a{*L@GA7JHJudxtDVA{K5Yh*k(%#x4W7w+^ zcb-+ofbT5ieG+@QG2lx&7!MyE2JWDP@$k`M;0`*d+oQmJ2A^de!3c53HFcfW_Wtv< zKghQ;*FifmI}kE4dc@1y-u;@qs|V75Z^|Q0l0?teobTE8tGl@EB?k#q_wUjypJ*R zyEI=DJ^Z+d*&}B_xoWvs27LtH7972qqMxVFcX9}c&JbeNCXUZM0`nQIkf&C}&skSt z^9fw@b^Hb)!^hE2IJq~~GktG#ZWwWG<`@V&ckVR&r=JAO4YniJewVcG`HF;59}=bf zLyz0uxf6MhuSyH#-^!ZbHxYl^mmBVrx) zyrb8sQ*qBd_WXm9c~Of$&ZP$b^)<~0%nt#7y$1Jg$e}WCK>TeUB{P>|b1FAB?%K7>;XiOfd}JQ`|IP#Vf%kVy zXa4;XFZ+>n;F>uX&3|4zqWK2u3c<>q;tzjsb1;d{u;L$-hq3qe@82(ob<3qom#%`+ z;vzYAs7TIMl_O75BXu|r`Qhc4UT*vN$3Oo0kAC!{f2#HexDy|qUpgTF;k{o6|L>7l z=?`=*LXaow1o;oNNLXsGTrvC)$R&{m=94Tf+2iTT3Y_Or z-!;^0a{kyWtO4vksG_3cyc7HQ0~detf0+2+qxq(e1NS251N}w5iTSrM)`0p8rem!j zZ56hGD=pHI*B+dd)2B`%|9f0goozCSeXPw3 z+58k~sI02Yz#lOneJzYcG)EB0|F+ggC6D|B`6}d0khAK-gz7U3EGT|M_9$ZINqZjwf>P zJCZ=ogSoE`=yV5YXrcTQZx@Un(64*AlLiyxWnCJ9I<5Nc*eK6eV1Mk}ci0*NrJ=t| zCXuJG`#7GBbPceFtFEpl{(lTm`LX=B_!H+& z>$*Hf}}y zkt@nLXFG9%v**s{z&{H4e?aqp%&l#oU8lxUxk2o%K+?aAe6jLojA& z_|J0<-%u^<;NT*%4)n2-OdqfctSl6iCHE?W_Q2zpJken#_xUJlidzs249H=b#g z?}L4-Tnp6)t_5X?_$v)vz`s9@^BME2X@w<>sKZ3=B{%*B$T5Nj%6!-Hr;I!Scj`lH z&2dHFlOISwWJ&S2vf~@I4i~(0*T%OFiuX|eD*nd2utS4$1_JM?zmp>a#CsVy6Er^z zeNNZZDE?R3pM?>~e?H_N`C`hy%m4jb;6L#8=a7l>3eJS2LGgEUxsau-Yh9l~o7=Yh z2mYg3`m5*3Ik|lKQf~euzZlCWzaN&=vHuHtOwK!2@W6)hqq$Zm|7`Nmu%9^F6UH?+ z@2ii+=iJ;ZzhiUKu$QB()nKk3FooI>Jr_IjzY6=qxYy;&mvi7BlQ?t4kRjIhb|2q? zd^K~{-^cxjVSj?!Xs=Da5IHmFzRj!Kzh~b!?`P7c&T9s77VLYB?8_?F zauM^)p;qFG!9PHLfIsnt43UnmV?Wn?Ki7aXSosgq;f?MYUuSIYwOn(5vWhb{f%$pn z4ySN-z}_%7|B);A@PA5k*7kkdr4xZ@s{e9j+9w;*RFm;XPDQwx%~;8iBzSKTIGKO z{53ZZU*OLr@S5=k;?CM^i#zkxs3Sj%z0U`L%q`qM+tP zX$aL;*^g$7UyM2Go+_4A+f)IQcy^G$h2E zb?nT$XlgTEFJI8GN6NQf%-eVn9mPilRqUbT$pN-|;FEjq@Ao&TxpZg=mEgBHB zU@grU;&sfmqlO=6|G3sU;7t8rbK$?X0y_v9$^{X`m4jZ_BR|B|@?ZCLSPPEzz`w1n zP5nA;4(kQFKm%$enjkkBxM%Y}2si&d|62L)U(dCzCGn56HN+i#6|nV-TGIo0;W;`( zW-y=1KF4dp$$mC_|6}pbb>IHoKQeZajXQB>jVR?u`R>%l1o54?6NnS*arpVopdEF; zeC5J3*M0p`*8lif;!irrcjC?(uExejsi~>4wKYwstGY^N@KY}TujLx`S=Cu+T=!dx zKWlPm->I**E{A*q-Z^FFT5$G%7Ij0_*Mo4-y6~RmyTzUB&lfae(WZfO>um}mnsDXPEbau-!13!!xd!qh*{C)6&bz0j1I{>y$D-S)b*)JMCPk!=~KL&6Ngin0p6MCOxF2L_R9t8N!$2Wpced<#`y!F;w zKTi5V_kX&X09wAIJ#anfg9Dhn0s7(C6Nj3S-mVn(i|C6ZAVq0$hE)874co};g z^hR7pe4lU$P;*ggYc4o&UTQC%liCXooIfkI3TNaBV%t~FRr}yHu7kjQ2J*3;e%;iW zvDVCh8=G80KAeyhCuY2LjrC!Od1rvF7h}zszxGV)&!)6ChP5WAjv-zQAMNJIG!JHS zwl?pLxC-V5II#(hQ`l)ZAp&M0xd4%cxmco*MIk?{BD=BK`1vpc}D39|XlV z{c&0oGdDa~TL2FT4lh=~1NL5O-P~0?V2#ie`v^CnANfGUM!b4F=JkCwd7Q`c8Na2q zJGQQk^?6w}Vg9-{|2047((lAV84uN%sK!N2?V(!_1{{v6rdgZl56f0zDMQ+q)jKzzu^ztsVken;=DjAh6G`Cw`Q4G+BjS+n*=KI~^K{W=%t zbD-rN)O4|*Q~@<#@1Vx$E!0W9`B~IZeFn87sHMXD>$M%|Bh93rdGf1lKoX3K651t&nhsl= zXxG|%@8}Bbrlp_u#t*DZX<}_0Yb{A9*1Pd_)LtqNwy6xT4pZrOY{s?N4)pPwT(i#y zT%`lRi8U#Ken4fw>H+N`{f#FF?ZxFlLZg7z7#cr4X>id z{9kUD`d2=w_Zlb{^c`5IOxWCZ1k<0T1D1Z31IU0Q2edsZ1K0xv$pQVYq2KEp&#v#Z z?{m@Lin;*Str(C2sfF^L>{R3cjY`~#)m>Wm$Y|1fzeS0-$(Q^z@} zEO*vlb-^XK9>w&Ef^=Zzo-1AFSP#9zb~X5_+){$(eB4K z8gtW+nl{q+CTh+>v(gWrsP^DB*ge(~Q$AGxJ-eYc1isti%$%nM<_&Ev?%|??PK`$p z{f-PM{Ym8k<$$)(F9)tqzFJ?h&Dk@D?Dt{4CHKJWLs8$zy6+(R)pr@0ur)xY{=uXFFzH_> z-F^tN1y(2hG8V)GpDg%wW0Px_ep~nIjD~*HCSxDi0y`H!`V*~RHs^uQsb1*bK1qGpmd zB1m`Cjw0`nLBF2|umz+a#2X$c?Lj;M?Lj;MUp*d>7j~ayNAyj@SLpeH`)BgRH}byy zyQSat!;U{@O(<<2fp&oQkIy$z`_CQ-)O@RN;QD9T4y|wIJ^%U#(BF%=`i49}j!D-) zkOwPSJaG03SMkE~BzW}b_v>LA&y)EEYO6sbdnTX*$>UF|JhZ&^MSb4}Tgbne_4n+C zwI8U4i~PI>7a3{kVa8|))*%C0|K+bIbmV~a`|G#+`TU#g zXW;bWIcWsQi9c4X*RUDpIfyoPY)2bI-r9)xulm1CJDkQd6u+f)_N=w1ElgEBjprPF z3o?Ly0RVeY_{3~fPVckRMxe2lM8hj!B8F)JO z!`AP6>u>5Y&3o9t0QxBpNE=lJx#NyIbp1gD zzUYBIPYHIv9ngk-Zt~<)62^1Zs1LLYMh@_tP^I7EX-9)Ed0^@y{k65Gp0KRcTmMWw zU|+)qx{#q0SL+4q?Q`i0>COIIF8a0Cf&C`hbMj?LmG9K&iW-?PJt*u)38tTXAP>@R zZL6uH^!RYNq$p>PKz7f-zvg>OKXcZ8h!%Vo@{VUZp|+iUD_xb(N~G|6c#oQK^nHZU zKg#F6<)+`rf~k*Xjjye+syV{bwU2glMMMs-^ss4`bYaVroXzn`YQUd__UlZL_mLs z(vO}k!~(mi|L+(5&;>r<;|OHnbXBE78LruP;{yBxZ6y7K3)nMo-{6PCI7gQi6+rF_ zkPod!Z8n}q46ykrlQS|hVB(}(2Kf7BCZ>Vc;V>ccbk2~NGaf6wGQH@W9&?Zt3v(h*P4xDrN>ex7+jH*+Qg z%^jH$&+*!v{sQ!xkWN4+>|b}qGvEd6ANzgqoVy5Qfws}ef2QqF{iiR5{pT}PS&yjo z>lron#va-p=v;m>WB+XVz|o;UJFdjo5_!RRD|6W{4}A2a#bZv)gS_`b|KsSH)Sd_JIr%<%n06TX&t{&!H#{)?4W9hlJ`R1>FyugOh3=D_{einr zu(Wf`qTkvED+gEULO0I*Hs%f;&=`=X4;N8Ovf28x$A*11`dmfy2=$+PNqX>XcG`h% zJY&A6@&)*WT^rC(Caj}2+|X|6cICm5h0OK0cGB_!wEKFZJU)OQ+TZ1q2bTx9hxnq& z$9ee|f9|0M^)#E&Pr4)f?o&DMM4w>Ksb{hF(0|wh+5_{vPow{V%TFzU2za&gjttNi zIyR9qA56dX52Qbv2aY^g`U7R43-p`#sO1A=KS2aKgfR+Yu^bQ*i-qu z%0mP;Ap)B~zZgO9lG^`325gOf?iUHF{~7jyGC)3L(eL(SQ70VzR~wLN18tnx(Cz2~ zctBl1kI)wAe+cxWHw*NW-d;=pd+>+wd$a@GBju*wFvabSaPtHiT!o#QFC+wBVwYo3s=y;z1jM+M=Fj!FZM>UzpL-eZzOT( zhmZmEfWa=%KE#V3-ZK5#v!Hzd{zc^{ctF~- z>DT-U`}5!fk$aj24`#uGdB7r`>oX5tU|d*b|N3V1lXmv%MGrvE(dXG)^-J*LA>$LE z7kut4`zE)v{@Op|(|@i#c>tM!12FQh?}PfA0`Bp%=%*RiXVzLDXnXtE@4B)5uR}a> zbNU}q+712pIrM`k^odG8dKtG$zwHmQI^c}tfjx5?egx3!e%JRm_64e+>`Ra1IRfLb z1KQ`SxmH{cZfyVS5m(&`{V}Y4j6J{b17`h6KWqZ&hfc(oR zxM%w!$F(mKy05kY&lco3%zvLCxBW+t*rxO+i=qGMvobx0-<7`VUu)ka`){=ew+Ovt zg%52_{&UbkUA8aJPWsk)gYWV4`dnxI%s?7^fGpq{ZQuu=VH{-t7w~K%_E<8`zS;V- zKTho*>;UQQul^1GT^HCt@I-q?)&4!QDgBndn?3sNKYKCQFU4LGKJ$n@Je$&w9@E$X z^p@iJ(v&`1(tq~1zc>0Vow-KR&vm!GUzT?Eqgnc)leZ9p)-Z*C!zqb=-$XG0 z^!8RfuQs5s>Q~qcz92(a_Q+KH?C*vCTr~UdTiR`JGuNH8v(J|FTiSEcPrBpmHRtmd zI2Jng0J=bXK);YY^rM?jzn?~X-Pe`GbAy{D)Y6D&1GY-EBcy%Bq?bKh?A>DD9DD!p z?{q02wno2sraGUkZv5dx+J8)&K$)No43Zr(*S`FEdL!4C)}WE}vJd%{S6-3VUw>Wp z?Aasv`T0^%P$2vE?L+Qhj~qB~K%eW)xH(=b_jU}TLD&BP*Pc9hz@Z=e0nkpLkWl}> z_5J^i(9Z7$(XG9~I3sY)`OGZ#_L06+Dy4E>UstcP-rU@xJ$&rxvo!n1Ao`P~KLU-8 z{zDgN4-&A6N!kPSYbQ&7sLufi`YtE2uN$S?e&5n>Y4(q#|KP!cc1j)T^QrUXMPFaP z_SoYO8S8G}Z$?AL4`;pE?7J5K8yWqy23>cCT2{=-)+A$X^-I9=e!@J@A&-;Ufc)`H}c(VI&;0x zrrGv()5mjP%jXzS{^|29?bLNXS0bC%p!YXI!;O457rjCEEzMkGf~B3$T}dXBO23tP z+Ci>;5UoM?C@bU@f9G1^X3=ly&ZeFH<@|RnOG--A&)fd)AUgjw?%izq{p(KJ`EP0v z2mU)P!+3t@X14DA=E2RR-|p${GZ9ETX=d+kJRZL$nSa0daI@&oUUxnZg0xd_xu>Vz lzF#z5%kSKX?YLH3ll^(hI(_`L*t#Iva2Ede*Z;>H_ \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/images/banner2.svg b/src/EmbedImagesMiddlewearExample/wwwroot/images/banner2.svg new file mode 100644 index 0000000..9679c60 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/images/banner2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/images/banner3.svg b/src/EmbedImagesMiddlewearExample/wwwroot/images/banner3.svg new file mode 100644 index 0000000..9be2c25 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/images/banner3.svg @@ -0,0 +1 @@ +banner3b \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/images/banner4.svg b/src/EmbedImagesMiddlewearExample/wwwroot/images/banner4.svg new file mode 100644 index 0000000..38b3d7c --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/images/banner4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/images/rose.jpg b/src/EmbedImagesMiddlewearExample/wwwroot/images/rose.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d72716718892f331fa760539bf4f19381b1a800d GIT binary patch literal 23699 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 S{L5v>zjyNg(M~cS4gUxA)*s6N literal 0 HcmV?d00001 diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/js/site.js b/src/EmbedImagesMiddlewearExample/wwwroot/js/site.js new file mode 100644 index 0000000..82ecce7 --- /dev/null +++ b/src/EmbedImagesMiddlewearExample/wwwroot/js/site.js @@ -0,0 +1 @@ +// Write your Javascript code. diff --git a/src/EmbedImagesMiddlewearExample/wwwroot/js/site.min.js b/src/EmbedImagesMiddlewearExample/wwwroot/js/site.min.js new file mode 100644 index 0000000..e69de29