From ba3539a3485fcf1612c3afeb75f6bf95f8a43bcb Mon Sep 17 00:00:00 2001 From: rejdzu Date: Sat, 22 Jun 2019 22:48:53 +0200 Subject: [PATCH] Added .NET Core implementation of Todo-MVP --- todos/netcore/.gitignore | 236 ++++++++++++++++++ todos/netcore/AspNet/AspNet.csproj | 17 ++ todos/netcore/AspNet/Program.cs | 20 ++ .../AspNet/Properties/launchSettings.json | 27 ++ todos/netcore/AspNet/Startup.cs | 127 ++++++++++ .../AspNet/appsettings.Development.json | 9 + todos/netcore/AspNet/appsettings.json | 8 + todos/netcore/Common/Common.csproj | 7 + todos/netcore/Common/IndexTemplate.cs | 82 ++++++ todos/netcore/Common/Todo.cs | 11 + todos/netcore/Common/TodoList.cs | 60 +++++ .../netcore/HttpListener/HttpListener.csproj | 12 + todos/netcore/HttpListener/HttpServer.cs | 168 +++++++++++++ todos/netcore/HttpListener/Program.cs | 18 ++ todos/netcore/README.md | 37 +++ todos/netcore/Todos.sln | 42 ++++ todos/netcore/static/check.svg | 1 + todos/netcore/static/plus.svg | 1 + todos/netcore/static/tick.png | Bin 0 -> 80189 bytes todos/netcore/static/todo.css | 153 ++++++++++++ todos/netcore/static/trashcan.svg | 1 + todos/netcore/static/x.svg | 1 + 22 files changed, 1038 insertions(+) create mode 100644 todos/netcore/.gitignore create mode 100644 todos/netcore/AspNet/AspNet.csproj create mode 100644 todos/netcore/AspNet/Program.cs create mode 100644 todos/netcore/AspNet/Properties/launchSettings.json create mode 100644 todos/netcore/AspNet/Startup.cs create mode 100644 todos/netcore/AspNet/appsettings.Development.json create mode 100644 todos/netcore/AspNet/appsettings.json create mode 100644 todos/netcore/Common/Common.csproj create mode 100644 todos/netcore/Common/IndexTemplate.cs create mode 100644 todos/netcore/Common/Todo.cs create mode 100644 todos/netcore/Common/TodoList.cs create mode 100644 todos/netcore/HttpListener/HttpListener.csproj create mode 100644 todos/netcore/HttpListener/HttpServer.cs create mode 100644 todos/netcore/HttpListener/Program.cs create mode 100644 todos/netcore/README.md create mode 100644 todos/netcore/Todos.sln create mode 100644 todos/netcore/static/check.svg create mode 100644 todos/netcore/static/plus.svg create mode 100644 todos/netcore/static/tick.png create mode 100644 todos/netcore/static/todo.css create mode 100644 todos/netcore/static/trashcan.svg create mode 100644 todos/netcore/static/x.svg diff --git a/todos/netcore/.gitignore b/todos/netcore/.gitignore new file mode 100644 index 0000000..09b57bc --- /dev/null +++ b/todos/netcore/.gitignore @@ -0,0 +1,236 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates +.vscode/ + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +bin/ +Bin/ +obj/ +Obj/ + +# Visual Studio 2015 cache/options directory +.vs/ +/wwwroot/dist/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Microsoft Azure ApplicationInsights config file +ApplicationInsights.config + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +orleans.codegen.cs + +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ + +# Jetbrains tools +.idea/ diff --git a/todos/netcore/AspNet/AspNet.csproj b/todos/netcore/AspNet/AspNet.csproj new file mode 100644 index 0000000..dbb0aa6 --- /dev/null +++ b/todos/netcore/AspNet/AspNet.csproj @@ -0,0 +1,17 @@ + + + + netcoreapp2.2 + InProcess + + + + + + + + + + + + diff --git a/todos/netcore/AspNet/Program.cs b/todos/netcore/AspNet/Program.cs new file mode 100644 index 0000000..351e53a --- /dev/null +++ b/todos/netcore/AspNet/Program.cs @@ -0,0 +1,20 @@ +using System; +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace AspNet +{ + public class Program + { + public static void Main(string[] args) + { + CreateWebHostBuilder(args).Build().Run(); + Console.WriteLine(System.IO.Directory.GetCurrentDirectory()); + } + + public static IWebHostBuilder CreateWebHostBuilder(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .UseUrls("http://127.0.0.1:3000"); + } +} diff --git a/todos/netcore/AspNet/Properties/launchSettings.json b/todos/netcore/AspNet/Properties/launchSettings.json new file mode 100644 index 0000000..de2ca5b --- /dev/null +++ b/todos/netcore/AspNet/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:61031", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "AspNet": { + "commandName": "Project", + "launchBrowser": false, + "applicationUrl": "http://localhost:3000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/todos/netcore/AspNet/Startup.cs b/todos/netcore/AspNet/Startup.cs new file mode 100644 index 0000000..8de52ee --- /dev/null +++ b/todos/netcore/AspNet/Startup.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; +using Todos.Common; + +namespace AspNet +{ + public class Startup + { + // This method gets called by the runtime. Use this method to add services to the container. + // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 + public void ConfigureServices(IServiceCollection services) + { + services.AddSingleton(new TodoList()); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.Run(async (context) => + { + switch(context.Request.Method) + { + case "GET": + if(context.Request.Path.Value.Equals("/")) + { + await HandleIndex(context); + break; + } + + if (context.Request.Path.Value.StartsWith("/static")) + { + await HandleStatic(context); + break; + } + + Handle404(context); + break; + + case "POST": + HandlePost(context); + RedirectToHome(context); + break; + + default: + RedirectToHome(context); + break; + } + }); + } + + private void HandlePost(HttpContext context) + { + var todos = context.RequestServices.GetService(); + var formData = context.Request.Form; + var item = formData["item"]; + int.TryParse(item, out var id); + + switch (context.Request.Path) + { + case "/done": + case "/not-done": + todos.Toggle(id); + break; + + case "/delete": + todos.Remove(id); + break; + + case "/": + todos.Add(item); + break; + } + } + + private async Task HandleIndex(HttpContext context) + { + var todos = context.RequestServices.GetService(); + var index = IndexTemplate.Render(todos.Get()); + context.Response.ContentType = "text/html"; + context.Response.StatusCode = 200; + await context.Response.Body.WriteAsync(index, 0, index.Length); + } + + private async Task HandleStatic(HttpContext context) + { + var mimeTypes = new Dictionary() { { "css", "text/css" }, { "svg", "image/svg+xml" } }; + var filePath = $"../{context.Request.Path}"; + var extension = filePath.Split('.').Last(); + try + { + using (var file = File.OpenRead(filePath)) + { + context.Response.StatusCode = 200; + context.Response.ContentType = mimeTypes[extension]; + await file.CopyToAsync(context.Response.Body); + } + } + catch + { + Handle404(context); + } + } + + private void Handle404(HttpContext context) + { + context.Response.StatusCode = 404; + } + + private void RedirectToHome(HttpContext context) + { + context.Response.StatusCode = 303; + context.Response.Headers.Add("Location", "/"); + } + } +} diff --git a/todos/netcore/AspNet/appsettings.Development.json b/todos/netcore/AspNet/appsettings.Development.json new file mode 100644 index 0000000..ba0f20b --- /dev/null +++ b/todos/netcore/AspNet/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/todos/netcore/AspNet/appsettings.json b/todos/netcore/AspNet/appsettings.json new file mode 100644 index 0000000..def9159 --- /dev/null +++ b/todos/netcore/AspNet/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/todos/netcore/Common/Common.csproj b/todos/netcore/Common/Common.csproj new file mode 100644 index 0000000..c16c6d5 --- /dev/null +++ b/todos/netcore/Common/Common.csproj @@ -0,0 +1,7 @@ + + + + netcoreapp2.2 + + + diff --git a/todos/netcore/Common/IndexTemplate.cs b/todos/netcore/Common/IndexTemplate.cs new file mode 100644 index 0000000..96c2bf0 --- /dev/null +++ b/todos/netcore/Common/IndexTemplate.cs @@ -0,0 +1,82 @@ +using System.Collections.Generic; +using System.Text; + +namespace Todos.Common +{ + public static class IndexTemplate + { + public static byte[] Render(IEnumerable todos) + { + var builder = new StringBuilder(); + + builder.Append(MainTemplateStart); + foreach(var todo in todos) + { + builder.Append(ToDoTemplate(todo)); + } + builder.Append(MainTemplateEnd); + return Encoding.UTF8.GetBytes(builder.ToString()); + } + + private static string MainTemplateStart => + @" + + + Todo MVP + + + + +

Todo MVP

+
+
+ + +
+
+
+

Todo list

+
    "; + + private static string MainTemplateEnd => + @"
+
+ + "; + + private static string ToDoTemplate(Todo todo) + { + var toDoClass = todo.Done ? "todo done" : "todo"; + var name = todo.Done ? $"{todo.Name}" : todo.Name; + var markAction = todo.Done ? "/not-done" : "/done"; + var markClass = todo.Done ? "uncomplete" : "complete"; + var markValue = todo.Done ? $"Mark not done \"{todo.Name}\"" : $"Mark done \"{todo.Name}\""; + + return $@"
  • + + {name} + +
    + + +
    +
    + + +
    +
  • "; + } + } +} diff --git a/todos/netcore/Common/Todo.cs b/todos/netcore/Common/Todo.cs new file mode 100644 index 0000000..db0ecb9 --- /dev/null +++ b/todos/netcore/Common/Todo.cs @@ -0,0 +1,11 @@ +namespace Todos.Common +{ + public struct Todo + { + public int Id { get; set; } + + public string Name { get; set; } + + public bool Done { get; set; } + } +} diff --git a/todos/netcore/Common/TodoList.cs b/todos/netcore/Common/TodoList.cs new file mode 100644 index 0000000..4233531 --- /dev/null +++ b/todos/netcore/Common/TodoList.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using System.Threading; + +namespace Todos.Common +{ + public class TodoList + { + private readonly List _todos; + private int _nextId; + + public TodoList() + { + _todos = new List(); + } + + public IEnumerable Get() + { + return _todos; + } + + public void Add(string name) + { + _todos.Add(new Todo() { Id = Interlocked.Increment(ref _nextId), Name = name }); + } + + public void Toggle(int id) + { + for (var i = 0; i < _todos.Count; i++) + { + var todo = _todos[i]; + if (todo.Id == id) + { + todo.Done = !todo.Done; + _todos[i] = todo; + break; + } + } + } + + public void Remove(int id) + { + var index = -1; + + for (var i = 0; i < _todos.Count; i++) + { + var todo = _todos[i]; + if (todo.Id == id) + { + index = i; + break; + } + } + + if (index >= 0) + { + _todos.RemoveAt(index); + } + } + } +} diff --git a/todos/netcore/HttpListener/HttpListener.csproj b/todos/netcore/HttpListener/HttpListener.csproj new file mode 100644 index 0000000..358a29b --- /dev/null +++ b/todos/netcore/HttpListener/HttpListener.csproj @@ -0,0 +1,12 @@ + + + + Exe + netcoreapp2.2 + + + + + + + diff --git a/todos/netcore/HttpListener/HttpServer.cs b/todos/netcore/HttpListener/HttpServer.cs new file mode 100644 index 0000000..f4b77d2 --- /dev/null +++ b/todos/netcore/HttpListener/HttpServer.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Threading.Tasks; +using System.Web; +using Todos.Common; + +namespace Todos.HttpListener +{ + public class HttpServer : IDisposable + { + private readonly System.Net.HttpListener _listener; + private readonly TodoList _todos; + private readonly string _prefix; + + public HttpServer(string prefix) + { + try + { + _listener = new System.Net.HttpListener(); + _prefix = prefix; + _todos = new TodoList(); + } + catch (PlatformNotSupportedException) + { + throw; + } + } + + public async void Start() + { + _listener.Prefixes.Add(_prefix); + _listener.Start(); + + Console.WriteLine($"Started listening on {_prefix}"); + + while (_listener.IsListening) + { + try + { + var context = await _listener.GetContextAsync(); + var stopwatch = new Stopwatch(); + Console.WriteLine($"Request starting HTTP/{context.Request.ProtocolVersion} {context.Request.HttpMethod} {context.Request.Url}"); + stopwatch.Start(); + await ProcessRequest(context); + stopwatch.Stop(); + Console.WriteLine($"Request finished in {stopwatch.Elapsed.TotalMilliseconds:0.####}ms {context.Response.StatusCode} {context.Response.ContentType}"); + } + catch(Exception ex) + { + Console.WriteLine(ex.Message); + } + } + } + + public void Dispose() + { + if (_listener != null && _listener.IsListening) + { + _listener.Stop(); + } + } + + private async Task ProcessRequest(HttpListenerContext context) + { + switch (context.Request.HttpMethod) + { + case "GET": + if (context.Request.RawUrl.Equals("/")) + { + await HandleIndex(context); + break; + } + + if (context.Request.RawUrl.StartsWith("/static")) + { + await HandleStatic(context); + break; + } + + Handle404(context); + break; + + case "POST": + await HandlePost(context); + RedirectToHome(context); + break; + + default: + RedirectToHome(context); + break; + } + + context.Response.Close(); + } + + private async Task HandlePost(HttpListenerContext context) + { + using (var reader = new StreamReader(context.Request.InputStream)) + { + var formData = HttpUtility.ParseQueryString(await reader.ReadToEndAsync()); + var item = formData["item"]; + int.TryParse(item, out var id); + + switch (context.Request.RawUrl) + { + case "/done": + case "/not-done": + _todos.Toggle(id); + break; + + case "/delete": + _todos.Remove(id); + break; + + case "/": + _todos.Add(item); + break; + } + } + } + + private async Task HandleStatic(HttpListenerContext context) + { + var mimeTypes = new Dictionary() { { "css", "text/css" }, { "svg", "image/svg+xml" } }; + // When running in Visual studio current directory is set to bin of Debug or Release + // When running from dotnet command current directory is set tu folder you run command + //var filePath = $"../../../../{context.Request.RawUrl}"; + var filePath = $".{context.Request.RawUrl}"; + var extension = filePath.Split('.').Last(); + try + { + using (var file = File.OpenRead(filePath)) + { + context.Response.StatusCode = 200; + context.Response.ContentType = mimeTypes[extension]; + await file.CopyToAsync(context.Response.OutputStream); + } + } + catch + { + Handle404(context); + } + } + + private async Task HandleIndex(HttpListenerContext context) + { + var index = IndexTemplate.Render(_todos.Get()); + context.Response.ContentType = "text/html"; + context.Response.StatusCode = 200; + await context.Response.OutputStream.WriteAsync(index, 0, index.Length); + } + + private void Handle404(HttpListenerContext context) + { + context.Response.StatusCode = 404; + } + + private void RedirectToHome(HttpListenerContext context) + { + context.Response.StatusCode = 303; + context.Response.RedirectLocation = "/"; + } + } +} diff --git a/todos/netcore/HttpListener/Program.cs b/todos/netcore/HttpListener/Program.cs new file mode 100644 index 0000000..6c35a14 --- /dev/null +++ b/todos/netcore/HttpListener/Program.cs @@ -0,0 +1,18 @@ +using System; + +namespace Todos.HttpListener +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine(System.IO.Directory.GetCurrentDirectory()); + using (var server = new HttpServer("http://127.0.0.1:3000/")) + { + server.Start(); + Console.WriteLine("Press any key to stop listening"); + Console.ReadKey(); + } + } + } +} diff --git a/todos/netcore/README.md b/todos/netcore/README.md new file mode 100644 index 0000000..ddfa7ff --- /dev/null +++ b/todos/netcore/README.md @@ -0,0 +1,37 @@ +# TODO-MVP in .NET CORE (C#) + +This implementation is written in [.NET Core] using two different HTTP servers that are available in the framework + + - [ASP.NET Core] cross platform HTTP server ([Kestrel]) + - [HTTP.sys] windows only HTTP server ([HttpListener]) + +## Prerequisites + Install runtime or sdk from [.NET Core download] website + +## Run host + +From todo-mvp/todos/netcore folder run desired host + +#### HttpListener + +This will work on Windows + + dotnet run --project HttpListener\HttpListener.csproj + +#### Kestrel + +This will work on Windows, Linux, macOS + + dotnet run --project AspNet\AspNet.csproj + +## Go to website +Access url [http://localhost:3000/](http://localhost:3000/) + +Enjoy + +[.NET Core]: https://docs.microsoft.com/en-us/dotnet/core/ +[.NET Core download]: https://dotnet.microsoft.com/download +[ASP.NET Core]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/index?view=aspnetcore-2.2 +[HttpListener]: https://docs.microsoft.com/en-us/dotnet/framework/network-programming/httplistener +[Kestrel]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2 +[HTTP.sys]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?view=aspnetcore-2.2 diff --git a/todos/netcore/Todos.sln b/todos/netcore/Todos.sln new file mode 100644 index 0000000..d26f081 --- /dev/null +++ b/todos/netcore/Todos.sln @@ -0,0 +1,42 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28922.388 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HttpListener", "HttpListener\HttpListener.csproj", "{1FDB58F2-13C9-4F12-9E57-70D774572ACE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspNet", "AspNet\AspNet.csproj", "{66FD3C77-1098-48DE-9059-EB892B1809EB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{E770D3AA-C98B-4276-93E3-BD51907001A8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{69263B31-B30A-40B5-8384-E37B484B4748}" + ProjectSection(SolutionItems) = preProject + README.md = README.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1FDB58F2-13C9-4F12-9E57-70D774572ACE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FDB58F2-13C9-4F12-9E57-70D774572ACE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FDB58F2-13C9-4F12-9E57-70D774572ACE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FDB58F2-13C9-4F12-9E57-70D774572ACE}.Release|Any CPU.Build.0 = Release|Any CPU + {66FD3C77-1098-48DE-9059-EB892B1809EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {66FD3C77-1098-48DE-9059-EB892B1809EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {66FD3C77-1098-48DE-9059-EB892B1809EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {66FD3C77-1098-48DE-9059-EB892B1809EB}.Release|Any CPU.Build.0 = Release|Any CPU + {E770D3AA-C98B-4276-93E3-BD51907001A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E770D3AA-C98B-4276-93E3-BD51907001A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E770D3AA-C98B-4276-93E3-BD51907001A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E770D3AA-C98B-4276-93E3-BD51907001A8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {37AB4976-9BF6-4DC0-A5CB-FDAFF6404762} + EndGlobalSection +EndGlobal diff --git a/todos/netcore/static/check.svg b/todos/netcore/static/check.svg new file mode 100644 index 0000000..2df5dee --- /dev/null +++ b/todos/netcore/static/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/todos/netcore/static/plus.svg b/todos/netcore/static/plus.svg new file mode 100644 index 0000000..23c27d8 --- /dev/null +++ b/todos/netcore/static/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/todos/netcore/static/tick.png b/todos/netcore/static/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..71fb4ad827eb36ab5b64a6fffbaf3f39b13204d4 GIT binary patch literal 80189 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 \ No newline at end of file diff --git a/todos/netcore/static/x.svg b/todos/netcore/static/x.svg new file mode 100644 index 0000000..e377314 --- /dev/null +++ b/todos/netcore/static/x.svg @@ -0,0 +1 @@ + \ No newline at end of file